from matplotlib import pyplot as plt
import random
# 设置字体
plt.rcParams['font.family'] = "KaiTi"
# 设置显示特殊符号
plt.rcParams['axes.unicode_minus'] = False
# 生成数据
y1 = [round(random.uniform(10,15),1) for _ in range(7)] # 每天的最高温度
y2 = [round(random.uniform(-2,2),1) for _ in range(7)] # 每天的最低温度
x = range(7)
"""
控制精度的方法:
1.格式化输出:
"{.2f}".format(x) 或者
f"{%.2f}"
2.rount()函数:
round(x,2)
3.decimal模块:
from decimal import Decimal
Decimal(x).quantize(Decimal('0.01'))
"""
# 绘制图像
fig,ax1 = plt.subplots()
# 设置共用x轴
ax2 = ax1.twinx()
# 绘制ax1
ax1.plot(x,y1,color="red",marker="o",linewidth=1,mfc="black",linestyle="--",label="当天最高温度",markersize=2.5)
# 绘制ax2
ax2.plot(x,y2,color="blue",marker="v",linewidth=1,alpha=0.5,mfc="white",linestyle="-.",label="当天最低温度",markersize=4)
# 设置坐标轴名称
ax1.set_xlabel("时间")
ax1.set_ylabel("温度\°C")
ax2.set_ylabel("温度\°C")
# ax1.set_label("当天最高温度")
# ax2.set_label("当天最低温度")
# 设置刻度
ax1.set_xticks(range(7),["星期一","星期二","星期三","星期四","星期五","星期六","星期日"])
ax1.set_yticks(range(10,16))
ax2.set_yticks(range(-2,3))
# 设置标题
fig.suptitle("星期一到星期日的最高和最低温度")
# 显示图例
ax1.legend(loc="best")
ax2.legend(loc="best")
在显示图例的时候,为什么只调用plt.legend的时候只会显示ax2的图例,不会显示ax1的图例,而且调用fig.legend()和单独分别使用ax1.legend()和ax2.legend()的时候,两个图例出现的位置不一样,使用fig.legend()时图例在表格外面,而ax1.legend()和ax2.legend()的时候图例在表格里面???