降水-水文过程线图的制作方法其实特别简单,只需要以下步骤即可:
- 整理降水数据和径流数据,保证两者之间时间轴相同;
- 将径流数据设置成折线图或者散点图;
- 将降水数据设置成柱状图,投影到y轴副坐标轴,并反转坐标轴;
- 调整坐标轴的数据展示范围,以保证降水和径流数据图没有重叠。
import matplotlib.pyplot as plt
import numpy as np
for year in range (1979 ,1988):
plt.clf()#画布内容清除
# 创建数据
x = np.arange(366)
data1 = rain_APCParray[:,year-1979]
data2 = flow_obsArray[:,year-1979]
# 创建一个画布
fig, ax1 = plt.subplots(figsize=(20,10))
# 绘制柱状图以顶端为底
ax1.bar(x, data1, color='blue', alpha=0.7, label='降水', bottom=0)
ax1.set_ylabel('降水', color='blue')
ax1.tick_params(axis='y', labelcolor='blue')
ax1.set_yticks(range(0,3))
# 反转data1的y轴
ax1.invert_yaxis()
# 创建第二个y轴
ax2 = ax1.twinx()
# 绘制折线图在底部
ax2.plot(x, data2, color='red', marker='o', label='径流')
ax2.set_ylabel('径流', color='red')
ax2.tick_params(axis='y', labelcolor='red')
# 设置x轴标签
plt.xlabel('X-axis')
# 合并图例
lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines + lines2, labels + labels2, loc='upper left')
# 显示图形
plt.show()
结果图如下