携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第24天,点击查看活动详情
1. 在一个坐标系中绘制多个图像
比如我们想在一个城市温度变化折图中,再绘制另外一个城市的温度变化折线图,那么我们就要学会如何在一个坐标系下绘制多个图像。
注意:想要去添加另一个在同一坐标系当中的不同图形,其实很简单,只需要我们再次plot即可。但是需要区分两种线条。
具体语法如下所示:在坐标系中绘制两个折线图,用到了同一个x,但也用到了两个不同对应的y值。
# 2. 绘制折线图
plt.plot(x, y_shanghai)
plt.plot(x, y_beijing)
2. 设置图形风格
绘图中可以设置图形风格,语法如下:
plt.plot(x, y, color='r', linestyle='==')
- color:指定线的颜色,通常都是颜色英文的首字母表示
- linestyle:指定线段类型
具体图形风格如下表格所示:
| 颜色字符 | 风格字符 |
|---|---|
| r红色 | - 实线 |
| g绿色 | -- 虚线 |
| b蓝色 | -. 点划线 |
| w白色 | : 点虚线 |
| c青色 | '' 留空、空格 |
| 洋红 | |
| y黄色 | |
| k黑色 |
3. 显示图例
如果只在plt.plot()中设置label还不能最终显示出图例,还需要通过plt.legent()将图例显示出来。 具体语法如下所示:
plt.plot(x, y_beijing, color='r', linestyle='--', label='北京')
# 显示图例
plt.legend(loc='best')
- label:图像标签,表示哪个图显示哪个名称
- loc="best":自动在最好的位置进行显示
- loc="upper right":上边靠右侧显示
- loc="right":在右侧进行显示
- loc="center left":中心靠左侧进行显示
4. 案例演示
案例需求:请在一个坐标系下分别显示两个城市(例如:北京和上海)温度随时间变化折线图,并且开启图例、网格,设计折线段类型、折线段颜色。
import random
import matplotlib.pyplot as plt
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 有时候,字体更改后,会导致坐标轴中的部分字符无法正常显示,此时需要更改axes.unicode_minus参数
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
# 0. 准备x,y坐标的数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x] # 列表生成式
y_beijing = [random.uniform(1, 3) for j 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='北京')
# 显示图例
plt.legend(loc='best')
# 2.1 添加x,y轴刻度
# 设置x,y轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 修改x,y轴坐标刻度显示
plt.xticks(x[::5], x_ticks_label[::5]) # 坐标刻度不可以直接通过字符串进行修改
plt.yticks(y_ticks[::5])
# 2.2 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5) # 开启网格,虚线,透明度0.5
# 2.3 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点0分到12点之间的温度变化图示", fontsize=20)
# 2.4 图像保存
# 保存图片到指定路径
# 在引号中放到是保存的路径
# plt.savefig("./test.png")
# 3. 显示图像
plt.show()
运行结果如下图所示: