python数据分析与展示(三)
Matplotlib库入门
一、Matplotlib库的导入
Matplotlib库是python优秀的可视化第三方库
Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发,matplotlib.pyplot是绘制各类可视化图形的命令子库,相当与快捷方式。
#plt是引入模块的别名,这是一种约定俗成的引入名称 import matplotlib.pyplot as plt
二、Matplotlib库小测
1.绘制简单的折线图
import matplotlib.pyplot as plt plt.plot([3,1,4,5,2]) plt.ylabel('Grade') plt.show()
#注:plt.plot()只有一个输入列表或数组时,参数被当作Y轴,X轴以索引自动生成。
2.将绘制的图保存成文件
import matplotlib.pyplot as plt plt.plot([3,1,4,5,2]) plt.ylabel('Grade') plt.savefig('D://test',dpi=600)
#注:plt.savefig()将图形存储为文件,默认为PNG格式,可以通过dpi修改输出质量
3.同时添加X轴和Y轴的数组绘图
import matplotlib.pyplot as plt plt.plot([0,2,4,6,8],[3,1,4,5,2]) plt.ylabel('Grade') plt.axis([-1,10,0,6]) plt.show()
#注:plt.plot(x,y)当有两个以上参数时,按照X轴和Y轴绘制数据点
plt.axis(list/array)为X轴和Y轴分别设置起始值和终止值
三、pyplot的绘图区域
plt.subplot(nrows,ncols,plot_number)
#nrows:横轴的数量
#ncols:纵轴的数量
#plot_number:当前绘图区域
例如:
plt.sublot(3,2,4)
当前的绘图区域:
简单实例:
import numpy as np import matplotlib.pyplot as plt def f(t): return np.exp(-t)*np.cos(2*np.pi*t) a=np.arange(0.0,5.0,0.02) plt.subplot(211) #第一块区域 plt.plot(a,f(a)) plt.subplot(212) #第二块区域 plt.plot(a,np.cos(2*np.pi*a)) plt.show()
效果:
四、pyplot的plot()函数
plt.plot(x,y,format_string,**kwargs) # x:X轴数据,列表或数组,可选 # y:Y轴数据,列表数组 # format_string:控制曲线的格式字符串,可选 # **kwargs:第二组或更多(x,y,format_string) #注:当绘制多条曲线时,各条曲线的x不能省略
#当不设置format_string时,matplotib会自动对一个绘图区域的多条曲线设置不同的颜色。
例:
import numpy as np import matplotlib.pyplot as plt a=np.arange(10) plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5) plt.show()
例子:
format_string:控制曲线的格式字符串,可选。由颜色字符、风格字符和标记字符组成。
颜色字符:
风格字符:
标记字符:
实例:
import numpy as np import matplotlib.pyplot as plt a=np.arange(10) plt.plot(a,a*1.5,'bo-',a,a*2.5,'gx--',a,a*3.5,'r-.',a,a*4.5,'y*:') plt.show()
效果:
五、pyplot的中文显示(pyplot并不默认支持中文显示)
1.使用rcParams修改字体
raParams的属性:
中文字体的种类:
实例:
import numpy as np import matplotlib import matplotlib.pyplot as plt matplotlib.rcParams['font.family']='Kaiti' matplotlib.rcParams['font.size']=12 matplotlib.rcParams['font.style']='normal' a=np.arange(0.0,5.0,0.02) plt.ylabel('纵轴:振幅') plt.xlabel('横轴:时间') plt.plot(a,np.cos(2*np.pi*a),'b--') plt.show()
效果:
2.在有中文输出的地方增加一个属性:fontproperties
实例:
import numpy as np import matplotlib import matplotlib.pyplot as plt a=np.arange(0.0,5.0,0.02) plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=12) plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=12) plt.plot(a,np.cos(2*np.pi*a),'b--') plt.show()
效果:
六、pyplot的文本显示函数
实例:
import numpy as np import matplotlib import matplotlib.pyplot as plt a=np.arange(0.0,5.0,0.02) plt.plot(a,np.cos(2*np.pi*a),'b--') plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=12,color='green') plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=12) plt.title('正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=20,color='red') plt.text(2,1,r'$\mu=100$',fontsize=15) plt.axis([-1,6,-2,2]) plt.show()
效果:
#注释的使用:
plt.annotate(s, xy=arrow_crd, xytext=text_crd, arrowprops=dict)
实例:
import numpy as np import matplotlib import matplotlib.pyplot as plt a=np.arange(0.0,5.0,0.02) plt.plot(a,np.cos(2*np.pi*a),'b--') plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=12,color='green') plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=12) plt.title('正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=20,color='red') plt.annotate(r'$\mu=100$',xy=(2,1),xytext=(3,1.5),arrowprops={'facecolor':'black','shrink':0.1,'width':2}) plt.axis([-1,6,-2,2]) plt.show()
效果:
七、pyplot的子绘图区域
1.subplot2grid()
虽然使用plt.subplot()方法也可以设置绘图区域,但是这种方法过于繁琐。当绘图子区域过多时,实际中更多使用plt.subplot2grid()方法。
plt.subplot2grid(GridSepc,CurSpec,colspan=1,rowspan=1) #理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始
划分区域效果:
2.GridSpec类
使用GridSpec类可以达到和subplot2grid()方法相同的效果。