Matplotlib基础-绘制多个坐标系


import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import random
# 设置字体
f = "/System/Library/Fonts/PingFang.ttc"
prop = fm.FontProperties(fname=f)
plt.rcParams['axes.unicode_minus']=False

# 生成数据
x = list(range(60))
y_beijing = [random.uniform(10,15) for i in x]
y_shanghai = [random.uniform(15,25) for i in x]

## 多个坐标系显示图像
#  1. 创建画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20,8), dpi=100)

# 2.图形绘制
axes[0].plot(x,y_beijing, label="BeiJing", color="g", linestyle="-.")
axes[1].plot(x,y_shanghai, label="ShangHai")

# 2.1 添加x, y轴刻度
y_ticks = range(40)
x_ticks_label = ["11点{}分".format(i) for i in x]
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5],fontproperties=prop)
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5],fontproperties=prop)

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

# 2.3 添加描述信息
axes[0].set_xlabel("时间",fontproperties=prop)
axes[0].set_ylabel("温度",fontproperties=prop)
axes[0].set_title("北京一小时温度变化图",fontproperties=prop)
axes[1].set_xlabel("时间",fontproperties=prop)
axes[1].set_ylabel("温度",fontproperties=prop)
axes[1].set_title("上海一小时温度变化图",fontproperties=prop)

# 2.4 显示图例
axes[0].legend(loc="best")
axes[1].legend(loc="best")

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

绘制出的图像为:

yTI62j.png