matplotlib的主要任务之一,就是提供一套表示和操作图形以及它内部对象的函数和工具。然而,matpoltlib不仅可以处理图形,还可以提供事件处理工具,为图形添加动画效果。有了这些附加功能,matplotlib就能够生成以键盘按键或鼠标移动触点发的交互式图表。
从逻辑上来讲,matplotlib的整体架构由位于三个不同层级。各层之间单向通信,每一层只能与它的下一层通信,而下层无法与上层通信。
● Backend层
● Artisit层
● Scripting层(pyplot)
pyplot的应用讲解
想要应用pyplot画一个简单的图,只需要三行代码。
首先导入pyplot模块,并将其命名为plt
import matplotlib.pyplot as plt
把要绘制图像的参数传给plot()函数
plt.plot([1,2,3,4])
该对象为一条直线,它表示图表中各数据点的线性延伸趋势。
生成图表之后,只需要使用show()函数能显示图表
plt.show()
会产生下图:
观察上图会发现,它的轴长与输入数据范围一致,无标题和轴标签,无图例,直接用蓝色线条连接了各数据点。图例看起来没有关键点,很单调。通过学习更多的命令可以使图例更加丰富。
下面列举几个方法
①设置图片大小和清晰度
plt.figure(figsize=(10,8),dpi=80)
②自动保存图片
失真plt.savefig('./t1.png') #存在当前路径下 可以保存为.svg矢量图格式,不会是真
③设置x,y轴坐标数值
plt.xticks()plt.yticks()plt.xticks(range(2,5)) #可以通过range设置坐标范围#但是不能加步长,会报错,可以利用列表实现例:_xtick_labels = [i/2 for i in range(4,49)] #步长可以达到0.5plt.xticks(_xtick_labels)#如果想扩大步长,可以在列表中取步长plt.xticks(_xtick_labels[::3])
★若想将横坐标设置为字符串,需要将字符串和数字列表一一对应
④设置横纵坐标标签、图片标题、网格、图例
plt.xlabel('字符串')plt.ylabel('字符串')plt.title()plt.grid() #alpha=0~1 可用来设置透明度plt.legend(prop=my_font,loc="best") #loc用来指定图例位置#可baidu matplotlib 官方帮助文档查看更多例子学习
但是matplotlib字体不支持中文,默认字体是英文,会显示乱码。所以要先修改默认字体。
以随机生成一个温度变化图为例。
from matplotlib import pyplot as pltimport randomimport matplotlibfrom matplotlib import font_managermy_font = font_manager.FontProperties(fname="C:\Windows\Fonts\HGXK_CNKI.TTF")x=range(0,120)y=[random.randint(20,35) for i in range(120)] #设置随机数值作为温度plt.figure(figsize=(20,8),dpi=80)plt.plot(x,y)_xtick_labels=["10点{}分".format(i) for i in range(60)]_xtick_labels+=["11点{}分".format(i) for i in range(60)]#将字符串与数字列表对应plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font)plt.xlabel ('时间',fontproperties=my_font,fontsize=20)plt.ylabel ('温度/(℃)',fontproperties=my_font,fontsize=20)plt.title('温度变化图',fontproperties=my_font,fontsize=20)plt.show()