1、什么是Matplotlib
Matplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建。
(1)Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
(2)Matplotlib 可以用来绘制各种静态,动态,交互式的图表。
(3)Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。
(4)Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D图形、甚至是图形动画等等。
2、Matplotlib基本语法要点
(1)设置坐标轴刻度
plt.xticks() 函数和 plt.yticks() 函数用来设置坐标轴的刻度显示的值
# 导入pyplot模块
from matplotlib import pyplot as plt
x = range(2, 26, 2)
y = [15, 13, 14, 5, 17, 20, 25, 26, 24, 22, 18, 15]
# 绘图
# 传入x和y的值,通过plot绘制出折线图
plt.plot(x, y)
# 调整x轴的刻度
_xtick_labels = [i/2 for i in range(4, 49)]
plt.xticks(_xtick_labels)
plt.yticks(range(min(y), max(y)+1))
其中当刻度过于密集时,可以使用列表的步长(间隔取值)来解决会自动帮我们对应
plt.xtick(x[::2])
(2)调整坐标轴上的刻度
# 调整x轴的刻度
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=font)
此步的作用:
(1)让列表x中的数据和xtick_labels上的数据都传入,最终会在x轴上一一对应的显示出来;(可以理解为第二项覆盖显示原有的内容)
(2)两组是数据的长度必须一样,否则不能完全覆盖整个轴
(3)使用列表的切片,每隔3个选一个数据进行展示
(4)为了让字符串不会覆盖,使用rotation选项,让字符串旋转45度显示
测试如图所示:
(3)设置中文显示
Matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字。
笔者使用的是方法是从网络下载一种字体文件复制放入Python文件中,如图所示
然后再使用时引用即可,这样不用考虑路径的问题,减少出错。
from matplotlib.font_manager import FontProperties # 导入FontProperties
font = FontProperties(fname="SimHei.ttf", size=8) # 设置字体
# 取步长, 数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3], xtick_labels[::3], rotation=45, fontproperties=font)
如代码所示:先导入FontProperties,后面在需要显示字体后面使用fontproperties=font引用即可。
当然这只是笔者使用的方法,参考了下面的链接,有需要其他的方法可以参考一下。
CSDN:Matplotlib中正确显示中文的四种方式
(4)给图像添加描述信息
(1)设置x轴的label
(2)设置y轴的label
(3)设置title
# 设置x轴的label
plt.xlabel("时间", fontproperties=font)
# 设置y轴的label
plt.ylabel("温度(C)", fontproperties=font)
# 设置title
plt.title("10点到12点每分钟的时间变化情况", fontproperties=font)
如下图所示:
(4)给图像绘制网格和添加图例
# 绘制网格
plt.grid(alpha=0.4, ls=":")
# 添加图例
plt.legend(prop=font, loc="upper left")
注:通过prop指定图例的字体,通过loc指定图例的位置,默认右上角
展示结果:
(5)保存图片
# 保存图片
plt.savefig("sig_size.png")
保存结果如图所示;
总结: