python数据可视化之matplotlib精进pdf_Python数据可视化之
matpl。。。
数据可视化能让⼈们更直观的传递数据所要表达的信息。Python 中有两个专⽤于可视化的库,matplotlib 和 seaborn ,本⽂将介绍matplotlib。Matplotlib:基于Python的绘图库,提供完全的 2D ⽀持和部分 3D 图像⽀持。
Seaborn:该 Python 库能够创建富含信息量和美观的统计图形。Seaborn 基于 matplotlib,具有多种特性,⽐如内置主题、调⾊板、可视化单变量数据、双变量数据,线性回归数据和数据矩阵以及统计型时序数据等,能让我们创建复杂的可视化图形。
⼀、python代码实现(matplotlib库)
1、导⼊数据库
import matplotlib.pyplot as plt
# 我们最常⽤matplotlib中的pyplot模块,别名设置为plt是约定俗称常⽤,也可以⾃⼰设置
2、作图
结合实际绘画过程,我们来理解⼀下⽤python作图,每⼀⾏代码的意义:
图形种类很多,根据实际项⽬需求,绘制不同类型的图像,很多时候我们会融合多种图像,从不同⾓度分析结果:数值型:散点图
时间序列:折线图
分类数据:柱状图
颜⾊:热图下⾯介绍⼀下常见的图以及常⽤的属性
2.1 散点图
x=[0.5,0.75,1,2,3,3.5,4,5.5] # 某学⽣不同科⽬的学习时间
y=[10,22,25,40,50,70,90,93] # 对应不同科⽬的分数
# 画散点图
plt.scatter(x,y,s=200) # s表⽰设置散点的⼤⼩
#设置图标标题
plt.title('学⽣分数情况',fontsize =24)
# 设置坐标轴标签
plt.xlabel('学习时间')
plt.ylabel('考试分数')
plt.show()
2.2 折线图
# 折线图
x=[1,2,3,4,5]
y=[10,20,20,35,30]
# 作图
'''
linewidth:修改线条宽度
color: 修改线条颜⾊
marker: 点的形状,o表⽰点为圆圈标记
linestyle:线条的形状,dash表⽰⽤虚线连接,也可以直接⽤'--'表⽰
label: 增加图例
'''
plt.plot(x,y,linewidth=3,color='red',marker='o',linestyle='--',label='我是图例')
# 显⽰图例
plt.legend(loc = 'upper left') # loc设置图例位置
# 设置图标的标题,并且给坐标轴加上标签
plt.title('我是标题',fontsize=20) #fontsize 修改标题⼤⼩
plt.xlabel('我是横轴')
plt.ylabel('我是纵轴')
我们希望x轴的刻度是0,1,2,3,4……,y轴的刻度是0,10,20,30……,所以我们需要⼿动设置。
# 修改坐标轴范围——⽅法1
'''
axis:坐标轴范围
语法:axis[xmin,xmax,ymin,ymax]
也就是axis[x轴最⼩值,x轴最⼤值,y轴最⼩值,y轴最⼤值,]
'''
plt.axis([0,6,0,40])
'''
使⽤数组同时绘制多个线性
'''
x= np.arange(0,20,0.2)
y1 = x
y2 = x**2
y3 = x**3
# 使⽤plot绘制线条
lineList = plt.plot(x,y1,x,y2,x,y3)
# 使⽤setp⽅法可以同时设置多个线条的属性
plt.setp(lineList,color='r')
plt.show()
如何在图上添加⽂本注释:
# 数据
x=[1, 2, 3, 4]
y=[1, 4, 9, 16]
# 作图
plt.plot(x,y ,color='r')
# 添加坐标轴名称
plt.xlabel('我是x轴')
plt.ylabel('我是y轴')
# 添加注释
'''
参数名xy:箭头注释中箭头所在位置,
参数名xytext:注释⽂本所在位置,
arrowprops在xy和xytext之间绘制箭头,
shrink表⽰注释点与注释⽂本之间的图标距离
# '''
plt.annotate('我是注释',xytext=(2,10) ,xy =(2,4.5),arrowprops=dict(facecolor='black',shrink=0.02))如何将多个⼦图画在⼀个图板上:
# 数据
x= np.arange(0,8,0.2)
y1 = x
y2 = x**2
y3 = x**3
# 创建画板
plt.figure(figsize=(3*4,1*3)) # figsize(画板宽度,画板⾼度),宽度决定列数,⾼度决定⾏数
ax1 = plt.subplot(1,3,1)
plt.plot(x,y1)
plt.title('我是y1对应的图')
# 创建画纸2并作图
ax2 = plt.subplot(1,3,2)
plt.plot(x,y2)
plt.title('我是y2对应的图')
# 创建画纸3并作图
ax3 = plt.subplot(1,3,3)
plt.plot(x,y3)
plt.title('我是y3对应的图')
plt.show()
2.3 柱状图
2.3.1 单系列柱状图
# 柱状图
# 数据
x = np.array(list('ABCDEF'))
y = np.random.randint(1,100,6)
# 作图
# x,y参数:x,y值
# width:宽度⽐例
# facecolor柱状图⾥填充的颜⾊
plt.bar(x,y,width=0.5,facecolor='lightblue')
plt.show()plt.bar - 这个⽹站可出售。 - 最佳的Server monitoring 来源和相关信息。# 柱状图
matplotlib中subplot
# 数据
x = np.array(list('ABCDEF'))
y = np.random.randint(1,100,6)
# 作图
# x,y参数:x,y值
# width:宽度⽐例
# facecolor柱状图⾥填充的颜⾊
plt.bar(x,y,width=0.5,facecolor='lightblue')
plt.show()
2.3.2 多系列柱状图
之前我们都是⽤plt来作图,事实上pandas也可以直接作图,下⾯就展⽰⼀下如何⽤pandas作多系列柱状图:# 数据
df = pd.DataFrame(np.random.rand(10,3)*20,columns=['a','b','c'])
df
# 之前都是⽤plt作图,其实DataFrame也可以作图
df.plot(kind='bar')
plt.show()
图以DataFrame的index为横轴,columns为纵轴,⾃动⽣成了图例。
# 柱状图的填充颜⾊也可以更改
df.plot(kind='bar',colormap='Blues_r',grid=True) # grid显⽰⽹格线
plt.show() 2.3.3 堆叠图
df.plot(kind='bar',grid = True,stacked=True)
# 多系列堆叠图
# stacked → 堆叠
plt.show() 2.4 热图
# 利⽤随机数⽣成⼀个⼆维数据(5*5)
data=[]
for i in range(5):
temp = list(np.random.randint(10,50,4))
data.append(temp)
data
# 作图并选择热图的颜⾊填充风格,这⾥选择hot
from matplotlib import cm
plt.imshow(data,hot_r)
#设置标题,横纵坐标
plt.title('我是标题')
# 增加右侧颜⾊进度条
plt.show()颜⾊越深,表明数字越⼤。