python数据可视化工具matplotlib各个画图工具使用说明。
直接调用plot()函数绘制
importmatplotlib.pyplot as plt # matplotlib包,可视化数据
importnumpy as np # numpy包,各类数学函数包
#获取数据集,范围是从-1到1,之间的50个
x= np.linspace(0,10,500)
#绘制的函数
y= 2*x + 1
#绘制图像
plt.plot(x,y)
plt.show()
图1-1 普通图像绘制
将函数图像画在Figure窗体中,需要注意的是:
f1 = plt.figure(num = 1)
……
f2 = plt.figure(num=2)
……
在f1和f2窗体之间的对函数图像的设置都是针对f1上的。f2后面的代码在遇到下一个figure之前都是作用在f2上的。
#第一个figure
#在这个figure声明之后,下一个figure声明之前的代码都是在当前figure上的操作
#num = 1 设置的是figure窗体的序号
plt.figure(num= 1)
plt.plot(x,y1,color= 'red')
#将两个图像在同一个figure中画
plt.plot(x,y2,linestyle='--')
#第二个figure
#figuresize=(10*14) 设置的是figure的长高
plt.figure(num= 2,figsize=(10,14))
#linestyle='--' 设置绘制的线为虚线
plt.plot(x,y2,linestyle='--')
图2-1 figure效果
(1) 获取figure边框的对象
(2) 将上、右的边框隐藏
(3) 设置x轴为底边框,y轴为左边框
(4) 设置x轴,y轴的位置,是通过设置底边框,左边框的位置设置。设置x、y轴的位置,就是设置x轴的起点在y轴上的位置,设置y轴的起点在x轴上的位置。
(5) 给x、y轴添加label标签
(6) 设置坐标轴的刻度
详细的步骤看代码。
#设置坐标轴的取值范围
plt.xlim(0,10)
plt.ylim(0,20)
#设置坐标轴的标签
plt.xlabel("x")
plt.ylabel("y")
#设置X轴的刻度
new_xticks= np.linspace(0,10,10) # 范围是-1~2,取5个值
new_yticks= np.linspace(0,20,5)
plt.xticks(new_xticks)
plt.yticks(new_yticks)
#设置Y轴刻度标签
plt.yticks([5,10,15,20],
[r'$normal$',r'$good$',r'$very\good$',r'$perfect$'])
图3-1 坐标轴位置设置效果
Legend是在figure窗体中显示一个小的窗体,标注函数图像的相关信息。可以设置其位置,显示的内容,以及函数图像在其内的标签。如图4-1中红色框框所示。
#handles=[l1,l2,]表示要显示在框中的线,labels=['a','b']表示在框中各个线的标签,loc = 'best'设置框的位置,best,会自动将框放在数据最少的位置
#plt.legend(handles=[l1,l2,],labels=['a','b',],loc = 'best')
plt.legend(loc= 'best')
图4-1 Legend
给函数图像的某一点添加标注,比如表明某一点的函数值,或者对某点进行解释说明。有两种方式:一个是调用annotion() 函数绘制,一个是调用text()绘制。
(1) 调用annotion
plt.annotate(r'$2x+5=%s$'%y0,xy= (x0,y0),xycoords = 'data',xytext = (+30,-30),textcoords = 'offsetpoints',fontsize = 16,
arrowprops= dict(arrowstyle = '->',connectionstyle = "arc3,rad = .2"))
‘’’
r'$2x+5=%s$'%y0:设置标注内容
xy =(x0,y0):设置标注点
xycoords ='data' 参考坐标
xytext =(+30,-30):标注文本的位置
‘’’
(2) 调用text
plt.text(-8,8,r'$this\is\ the\ some\ text.\mu\ \sigma_i\ \alpha_t$',fontdict={'size':16,'color':'r'})
图5-1 annotion效果
在函数图像复杂的情况下,坐标轴刻度可能会被遮盖,这时可以通过设置刻度的背景颜色来凸显出刻度,将用到bbbox()函数。
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(12)
# alpha = 0.7 设置透明度edgecolor = 'None':边框 facecolor = 'white':背景
label.set_bbox(dict(facecolor = 'white',edgecolor = 'None',alpha =0.7,zorder = 2))
图6-1 Tick效果
用来绘制散点图,可以绘制直线、曲线的散点图。实际效果看图7-1。
importmatplotlib.pyplot as plt
import numpy as np
#1.获取数据
#用随机数生成一个呈正太分布的二维数据组,平均值是0,方差是1
n= 1024
X= np.random.normal(0,1,n) # 所有x 的值
Y= np.random.normal(0,1,n)
#2.绘制散点图
T= np.arctan2(Y,X) # 获取颜色数值
plt.scatter(X,Y,s=75,c= T,alpha=0.5)
#3.设置取值范围和隐藏坐标轴刻度
plt.xlim(-1.5,1.5)
plt.ylim(-1.5,1.5)
plt.xticks(()) # 隐藏x轴
plt.yticks(())
plt.show()
图7-1 scatter效果图
用来绘制柱状图,参数有:X,Y的值、背景颜色、边框颜色等等。可以对每个柱状设置标签等等。
import matplotlib.pyplot as plt
import numpy as np
# 1.获取数值
n = 12 # 柱状数量
X = np.arange(n)
Y1 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n) # 均匀分布的数据
Y2 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
# 2.绘图
plt.bar(X,+Y1,facecolor = '#9999ff',edgecolor = 'white')
plt.bar(X,-Y2,facecolor = '#ff9999',edgecolor = 'white')
# 3.设置标注
for x,y in zip(X,Y1):
plt.text(x, y + 0.02, '%.2f'%y, ha = 'center', va = 'bottom')
for x,y in zip(X,Y2):
plt.text(x, -y - 0.02,'%.2f'%y, ha = 'center', va = 'top')
# 4.设置取值范围,隐藏坐标轴
plt.xticks(())
plt.yticks(())
plt.xlim(-.5, n)
plt.ylim(-1.25, 1.25)
plt.show()
图8-1 Bar效果图
import matplotlib.pyplot as plt
import numpy as np
# 获取数据集,范围是从-1到1,之间的50个
x = np.linspace(-10 ,10 ,500)
# 绘制的函数
y1 = 2* x + 1
y2 = x**2 - 10
plt.figure(num=1) # num = 1 设置的是figure窗体的序号
# ====================设置坐标轴==========================
# 设置坐标轴的取值范围
plt.xlim(-10,10)
plt.ylim(-20,20)
#设置坐标轴的标签
plt.xlabel("x")
plt.ylabel("y")
# 设置X轴的刻度
new_xticks = np.linspace(-10,10,9) # 范围是-1~2,取5个值
new_yticks = np.linspace(-20,20,9)
plt.xticks(new_xticks)
plt.yticks(new_yticks)
# 设置显示的坐标轴
ax = plt.gca() # 获取边框对象,gca: getcurrent axis
ax.spines['right'].set_color('none') # 设置右边和顶部的坐标为空白,只留下左边和底部的
ax.spines['top'].set_color('none')
# 调整坐标轴的位置
# 设置x坐标刻度数组或名称的位置,所有位置有:top,bottom,both,default,none
ax.xaxis.set_ticks_position('bottom') # 设置x轴为底部的边框
# 设置x轴坐标的位置,位置所有属性:outward,axes,data
ax.spines['bottom'].set_position(('data',0)) # ax.spines['bottom'] 是指 x轴
ax.yaxis.set_ticks_position('left') # 设置y轴为左侧的边框
# 设置y坐标刻度的位置,所有位置:left,right,both,default,none
ax.spines['left'].set_position(('data',0))
# ====================设置坐标轴==========================
# 绘制图像
l1, = plt.plot(x, y1, color='red',label = 'line')
l2, = plt.plot(x, y2, linestyle='--',label ='square line')
#================= 绘制legend 框===========================
# handles=[l1,l2,]表示要显示在框中的线,labels=['a','b']表示在框中各个线的标签,loc = 'best'设置框的位置,best,会自动将框放在数据最少的位置
#plt.legend(handles=[l1,l2,],labels=['a','b',],loc = 'best')
plt.legend(loc = 'best')
#================= 绘制legend 框===========================
# 最后show,才能绘制图像
plt.show()