Matplotlib是建立在Numpy基础之上的python绘图库。Matplotlib是python中常用的可视化工具之一,可以非常的方便的创建海量类型2D图标和一些基本的3D图标。
1.导入模块:
①from matplotlib import pylab
导入pyplot和numpy模块
②import matplotlib.pyplot as plt
仅导入plt,(常用)
2.基本绘图
import matplotlib.pyplotas plt
import numpy as np
x = np.linspace(-10,10,100)
y=np.sin(x)
plt.plot(x,y,ls="-",lw="2",c="k")
plt.show()
np.linspace(a,b,num=c)创建指定间隔内均匀间隔数字的一维数组——a为起始值,b为结束值,c为数组元素个数,即-10到10之间均匀的取100个数。plot()展现变量的趋势变化。通过show()展示绘制图形
①plot()——展示变量的趋势变化,主要展示折线、散点图
参数为:
x:x轴上的数值
y:y轴上的数值(x,y的数量要一样)
第三个参数可以设置散点图‘o’或者颜色等各种各样的样式,可以同时传入多个参数
lw:折线图的线条宽度(一个值)
①plt.plot(x,y,ls=":",lw="2",c="k")
②plt.plot(x,y,"rv")
③plt.plot(x,y,"*y")
·绘制多条曲线:
x = np.linspace(0,10,100)
y=np.sin(x)
plt.plot(x,y)
plt.plot(x,x+2)
plt.plot(x,np.log2(x))
plt.show()
②寻找变量之间的关系
plt.scatter()
参数:x,y轴上的数值,c散点图的标记颜色
x=np.linspace(0.05,10,1000)
y=np.random.rand(1000)
plt.scatter(x,y,c='b')
plt.show()
③xlim(),ylim()——设置x(y)轴的数值显示范围
④xlabel(string),ylabel(string)——设置x(y)轴的标签文本
x=np.linspace(0,10)
y = x**2
plt.xlabel("x")
plt.ylabel("y")
plt.title("nap")
plt.minorticks_on()
plt.plot(x,y,color='red')
plt.show()
⑤grid()——绘制刻度线网格线
x=np.linspace(0,10)
y = x**2
plt.grid(ls=':',c='y')
plt.plot(x,y,c='b')
plt.show()
⑥axhline(),axvline()——绘制平行于x(y)轴的水平参考线
参数:
y(x):水平参考线出发点
c:颜色
ls:参考线线条风格
lw:参考线的线条宽度
x=np.linspace(0,10)
y = x**2
plt.axhline(y=40,c='r',ls=":",lw=2)
plt.axvline(x=6,c='r',ls=":",lw=2)
plt.plot(x,y,label ="plot figure")
plt.legend()
plt.show()
⑦axvspan(),axhspan()——绘制垂直于x轴的参考区域
参数:
x(y)min:参考区域的起始位置
x(y)max:参考区域的终止位置
facecolor:区域颜色
alpha:透明度
x=np.linspace(0,10)
y = x**2
# plt.axhline(y=40,c='r',ls=":",lw=2)
# plt.axvline(x=6,c='r',ls=":",lw=2)
plt.axvspan(xmin=6,xmax=8,facecolor="y",alpha=0.3)
plt.axhspan(ymin=40,ymax=60,facecolor="y",alpha=0.3)
plt.plot(x,y,label ="plot figure")
plt.legend()
plt.show()
⑧annotate()——添加图形内容细节的指向型注释文本
参数:
string:文本内容
xy:备注的图形内容的位置坐标
xytext:注释文本的坐标位置
weight:文本字体粗细风格
color:文本字体颜色
arrowprops:只是被注释内容的箭头属性字典
x=np.linspace(0,10)
y = x**2
plt.plot(x,y,label="x^2",c="b")
plt.legend()
plt.annotate("(1,1)",xy=(1,1),xytext=(1.5,6),color="b",arrowprops=dict(arrowstyle='->',connectionstyle='arc3',color='b'))
plt.show()
⑨text()——添加图形内容细节的无指向性注释文本
plt.text(x,y,string,weight="",color="")
x=np.linspace(0,10)
y = x**2
plt.plot(x,y,label="x^2",c="b")
plt.legend()
plt.text(4,30,"y=x^2",color='b')
plt.show()
⑩title()——添加图形内容标题
plt.title(string)
x=np.linspace(0,10)
y = x**2
plt.plot(x,y,label="x^2",c="b")
plt.legend()
plt.text(4,30,"y=x^2",color='b')
plt.title("y=x^2")
plt.show()
·legend()——表示不同图形的文本标签图例
plt.legend(loc='')
loc:图例在图中的地理位置
3.pyplot的基础图标函数如下
①饼图:
labels=[u"第一部分",u"第二部分",u"第三部分",u"第四部分"]
sizes=[15,30,45,10]
colors=['red','yellow','blue','green']
#每个标签的大小,百分比会自动算
explode=(0,0.1,0,0)
#将某部分分出来,使用括号,用数值表示分割出来的与其他几块的间隙
plt.figure(figsize=(6,9))
#调节图形大小宽高
figl,axl=plt.subplots()
plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',startangle=90)
plt.axis('equal')
plt.show()
②直方图
plt.hist(x)
x:在x轴上绘制箱体的定量输入值
a=np.random.normal(100,20,size=100)
plt.hist(a,20,density=True,histtype='stepfilled',facecolor='b',alpha=0.75)
plt.title('histogram')
plt.show()
③极线图
plt.polar(theta,r)
theta:每个标记所在射线与极经的夹角
r:每个标记到原点的距离
theta=np.linspace(0.0,2*np.pi,15,endpoint=False)
r=30*np.random.rand(15)
plt.polar(theta,r,color='#6BBBEC',linewidth=2,marker='*',mfc='b',ms=10,linestyle=':')
plt.show()
④柱状图
plt.bar(x,y)
x=[1,2,3,4,5,6,7,8]
y=[3,1,4,5,8,9,7,2]
plt.bar(x,y,align='center',color='c',tick_label=["q","a","c","e","r","j","b","p"],hatch='/')
plt.show()
4.Matplotlib绘图区域:
plt.subplot(nrows,ncols,plot_number)
↓
plt.subplot(2,2,3)
a=np.random.normal(100,20,size=100)
plt.hist(a,20,density=True,histtype='stepfilled',facecolor='b',alpha=0.75)
plt.title('histogram')
plt.subplot(2,2,2)
labels=[u"第一部分",u"第二部分",u"第三部分",u"第四部分"]
sizes=[15,30,45,10]
colors=['red','yellow','blue','green']
#每个标签的大小,百分比会自动算
explode=(0,0.1,0,0)
#将某部分分出来,使用括号,用数值表示分割出来的与其他几块的间隙
plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',startangle=90)
plt.axis('equal')
plt.subplot(2,2,1)
x=np.linspace(-5,5,100)
y=x**2
plt.plot(x,y,'-',c='b')
plt.subplot(2,2,4)
x=np.linspace(-5,5,100)
y=np.random.rand(100)
plt.scatter(x,y)
plt.show()