1.根据下列数据制图,要求:降水和气温绘制在一张图中,降水量用直方图,气温用折线。其他参数请参阅官方文档自行设置,要尽可能做到清晰、美观。
#作业四
import pandas as pd #数据快速读入
import numpy as np
import matplotlib.pyplot as plt
#读取数据
path1=r'C:\Users\Administrator\Desktop\作业\作业三\T&P.csv' #python里面反斜杠是转义字符,前面加r否则报错不认为是路径
f1=pd.read_csv(path1)
#数据预处理——检查无缺测数据
#创建绘图对象
fig = plt.figure(figsize=(10,4))
ax = fig.add_subplot()
#参数设置
t_clr = 'tab:red' #Tableau Palette颜色
t_lb= r'Trem. [$^{\circ}$C]'
ax.plot(f1.year,f1.temp,color=t_clr,label=t_lb,marker='o',linestyle='-',linewidth=2) #label图例内容
#ax.fill_between(t,tmin,tmax,color=t_clr,alpha=0.5,lable='min/max') #线图x区域填充图
#坐标
font1 = {'family' : 'Times New Roman','weight' : 'normal','size' : 18} #设置横纵坐标的名称以及对应字体格式
font2 = {'family' : 'Times New Roman','weight' : 'normal','size' : 15}
plt.xlabel('years',font1)
plt.ylabel(t_lb,font2)
plt.title('1981-2021 T and P',font1)
ax.legend(loc='upper left',frameon=False) #legend图例——loc位置——frameon图例方框 ——简洁没有信息量的元素,更好的关注图中信息
ax.grid(ls=':') #网格——ls线的样式
ax.set_yticks(np.arange(-10,41,10)) #y轴坐标——起,终,间隔长度!!!使得间隔数与另一个变量y轴相同
#叠加绘制第二个变量(twinx)
pr_clr = 'tab:blue'
pr_lb = r'Precip. [mm/day]'
ax_pr = ax.twinx()
ax_pr.bar(f1.year,f1.prec,color=pr_clr,label=pr_lb,width=0.4) #条形图
ax_pr.set_ylabel(pr_lb,font2)
ax_pr.legend(loc='upper right',frameon=False)
ax_pr.grid(ls=':')
ax_pr.set_yticks(np.arange(0,301,60))
ax_pr.set_ylim(0,301) #限制左侧坐标轴刻度
plt.tight_layout() #自动调整坐标
#画布操作(methods)——保存图片
plt.savefig(r'C:\Users\Administrator\Desktop\作业\作业三\第四次.png')
plt.show()