matplotlib学习总结:06在一张图中绘制多个坐标轴(多个坐标系显示)

在使用matplotlib绘图的过程中,有时会有将多个不同的图绘制在不同坐标轴上的需求,这个时候就要借助subplots方法来实现。

如果我们想要将上海和北京的天气图显示在同一个图的不同坐标系当中,显示的效果如下图所示:

matplotlib学习总结:06在一张图中绘制多个坐标轴(多个坐标系显示)_第1张图片

实现的代码如下,注意点已经在注释中标明:

from matplotlib import pyplot as plt
import random

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 显示中文

# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 5) for i in x]

# 1.创建画布
# plt.figure(figsize=(20, 8), dpi=100)
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)        # 代表的是一行两列的画布

# 2.绘制图像
# plt.plot(x, y_shanghai, label="上海")
# plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")
axes[0].plot(x, y_shanghai, label="上海")
axes[1].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])

# 第一张图的刻度
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
# 跟set_xticks后接参数的方法作用相同, 但是 axes[1].set_xticks(x[::5], x_ticks_label[::5]) 这种方式不可行
axes[0].set_xticklabels(x_ticks_label[::5])

# 第二张图的刻度
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])

# 2.2 添加网格显示
# plt.grid(True, linestyle="--", alpha=0.5)
axes[0].grid(True, linestyle="--", alpha=0.5)
axes[1].grid(True, linestyle="--", alpha=0.5)

# 2.3 添加描述信息
# plt.xlabel("时间")
# plt.ylabel("温度")
# plt.title("中午11点--12点某城市温度变化图", fontsize=20)
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("中午11点--12点某城市温度变化图", fontsize=20)

axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("中午11点--12点某城市温度变化图", fontsize=20)

# # 2.4 图像保存
plt.savefig("./test.png")

# # 2.5 添加图例
# plt.legend(loc=0)
axes[0].legend(loc=0)
axes[1].legend(loc=0)

# 3.图像显示
plt.show()

 

你可能感兴趣的:(数据分析,python,数据分析,数据可视化)