本文已参与「新人创作礼」活动,一起开启掘金创作之路。
matplotlib是受MATLAB的启发构建的。matplotlib.pyplot模块中有一套完全仿照MATLAB的函数形式的绘图接口,
这套函数接口方便MATLAB用户过度到matplotlib包。
本篇文章是博主在B站学习总结,写了一天,讲述matplotlib绘图技巧,干货加实例,并附代码、运行图,
希望对大家有所帮助。
引例:
题干:已知每天温度数据如下,[15, 12.2, 14, 14, 34, 43, 23, 34, 11.5, 22, 23, 12],现在期望利用pyplot绘制折线图,展示气温的变化。
要求:能够有汉字描述,正确显示样式,对x轴,y轴有文字性描述,线条颜色可选。
- 代码如下:
from matplotlib import pyplot as plt
x = range(2, 26, 2)
y = [15, 12.2, 14, 14, 34, 43, 23, 34, 11.5, 22, 23, 12]
plt.plot(x, y)
plt.show()
- 运行结果:
可以看到,上图十分简洁,大致达到了初学者希望绘制图片的期望。但是,我们希望能够增加对这幅图的描述信息,并且让图片更美观。
修改之后的代码(添加了x轴,y轴的描述信息,标题)如下:
from matplotlib import pyplot as plt
from matplotlib import font_manager#设置字体
import random
# 使用my_font存出一个加载的中文字体
my_font = font_manager.FontProperties(fname='C:\Windows\Fonts\STSONG.TTF')
y = [random.randint(20, 35) for i in range(120)]
x = range(120)
fig = plt.figure(figsize=(16,6),dpi=80)
##调整x轴刻度并添加汉字解释
_xticks_lable = ["10点{}分".format(i) for i in range(60)]
_xticks_lable += ["11点{}分".format(i) for i in range(60)]
#取步长,数据与字符串一一对应
plt.xticks(list(x)[::3], _xticks_lable[::3], rotation=45, fontproperties=my_font)#字符串旋转45度
#添加描述信息
plt.xlabel("时间 单位(min)", fontproperties=my_font)
plt.ylabel("温度 单位(C)", fontproperties=my_font)
plt.title("10点到12点每分钟气温变化", fontproperties=my_font)
##绘制网格,横竖线根据x,y坐标轴数目
plt.grid(alpha=0.5)#alpha设置网格透明度
plt.plot(x,y)
plt.show()