matplotlib的主要任务之一,就是提供一套表示和操作图形以及它内部对象的函数和工具。然而,matpoltlib不仅可以处理图形,还可以提供事件处理工具,为图形添加动画效果。有了这些附加功能,matplotlib就能够生成以键盘按键或鼠标移动触点发的交互式图表。 从逻辑上来讲,matplotlib的整体架构由位于三个不同层级。各层之间单向通信,每一层只能与它的下一层通信,而下层无法与上层通信。

python docx 设置默认宋体 python默认字体大小_字符串

● Backend层

python docx 设置默认宋体 python默认字体大小_python docx 设置默认宋体_02

● Artisit层

python docx 设置默认宋体 python默认字体大小_图例_03

python docx 设置默认宋体 python默认字体大小_python docx 设置默认宋体_04

python docx 设置默认宋体 python默认字体大小_图例_05

● Scripting层(pyplot)

python docx 设置默认宋体 python默认字体大小_python docx 设置默认宋体_06

pyplot的应用讲解


想要应用pyplot画一个简单的图,只需要三行代码。 首先导入pyplot模块,并将其命名为plt

import matplotlib.pyplot as plt


把要绘制图像的参数传给plot()函数

plt.plot([1,2,3,4])


该对象为一条直线,它表示图表中各数据点的线性延伸趋势。 生成图表之后,只需要使用show()函数能显示图表

plt.show()


会产生下图:

python docx 设置默认宋体 python默认字体大小_python docx 设置默认宋体_07

python docx 设置默认宋体 python默认字体大小_随机数_08


观察上图会发现,它的轴长与输入数据范围一致,无标题和轴标签,无图例,直接用蓝色线条连接了各数据点。图例看起来没有关键点,很单调。通过学习更多的命令可以使图例更加丰富。 下面列举几个方法 ①设置图片大小和清晰度

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()

python docx 设置默认宋体 python默认字体大小_python docx 设置默认宋体_09