实现一个简单的Matplotlib画图 — 以折线图为例
import matplotlib.pyplot as pltimport random# 0.准备x, y坐标的数据x = range(60)y_shanghai = [random.uniform(15, 18) for i in x]# 1.创建画布plt.figure(figsize=(10, 10), dpi=100)# 2.绘制折线图plt.plot(x,y_shanghai)# 3.显示图像plt.show()
添加自定义x,y刻度
# 增加以下两行代码# 构造x轴刻度标签x_ticks_label = ["11点{}分".format(i) for i in x]# 构造y轴刻度y_ticks = range(40)# 修改x,y轴坐标的刻度显示plt.xticks(x[::5], x_ticks_label[::5])plt.yticks(y_ticks[::5])
添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)
添加描述信息
plt.xlabel("时间")plt.ylabel("温度")plt.title("中午11点0分到12点之间的温度变化图示", fontsize=20)
图像保存
# 保存图片到指定路径plt.savefig("test.png")
设置图形风格
| 颜色字符 |
风格字符 |
| r 红色 |
- 实线 |
| g 绿色 |
- - 虚线 |
| b 蓝色 |
-. 点划线 |
| w 白色 |
: 点虚线 |
| c 青色 |
‘ ‘ 留空、空格 |
| m 洋红 |
|
| y 黄色 |
|
| k 黑色 |
显示图例
# 绘制折线图plt.plot(x, y_shanghai, label="上海")# 使用多次plot可以画多个折线plt.plot(x, y_beijing, color='r', linestyle='--', label="北京")# 显示图例plt.legend(loc="best")
loc可选参数
| Location String |
Location Code |
| ‘best’ |
0 |
| ‘upper right’ |
1 |
| ‘upper left’ |
2 |
| ‘lower left’ |
3 |
| ‘lower right’ |
4 |
| ‘right’ |
5 |
| ‘center left’ |
6 |
| ‘center right’ |
7 |
| ‘lower center’ |
8 |
| ‘upper center’ |
9 |
| ‘center’ |
10 |
import matplotlib.pyplot as pltimport random# 0.准备数据x = range(60)y_shanghai = [random.uniform(15, 18) for i in x]y_beijing = [random.uniform(1,3) for i in x]# 1.创建画布plt.figure(figsize=(20, 8), dpi=100)# 2.绘制图像plt.plot(x, y_shanghai, label="上海")plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")# 2.1 添加x,y轴刻度# 构造x,y轴刻度标签x_ticks_label = ["11点{}分".format(i) for i in x]y_ticks = range(40)# 刻度显示plt.xticks(x[::5], x_ticks_label[::5])plt.yticks(y_ticks[::5])# 2.2 添加网格显示plt.grid(True, linestyle="--", alpha=0.5)# 2.3 添加描述信息plt.xlabel("时间")plt.ylabel("温度")plt.title("中午11点--12点某城市温度变化图", fontsize=20)# 2.4 图像保存plt.savefig("./test.png")# 2.5 添加图例plt.legend(loc=0)# 3.图像显示plt.show()
常见图形绘制
# 折线图# plt.plot(x,y)# 散点图# plt.scatter(x,y)# 柱状图# plt.bar(x,y,align='center',color='r')# 直方图# plt.hist(x,bins=None)# 饼图bingx = [10,20,30]explode = (0,0.1,0)labels = ['a','b','c']plt.pie(bingx,explode=explode,labels=labels,autopct='%1.2f%%')plt.show()