用Python写一段代码,画一张箱线图和折线图组成的复合图,数据是1979-2023年的年降水数据,是时间序列,折线图表示每年降水量的的平均值,箱线图表示年降水量的上下四分位数和中位数
时间: 2024-09-29 13:06:38 浏览: 32
你可以使用Python的matplotlib库来创建这样的复合图表。首先,你需要安装`pandas`和`matplotlib`,如果还没有安装,可以使用下面的命令:
```bash
pip install pandas matplotlib
```
接下来,假设你有一个CSV文件名为`precipitation_data.csv`,其中包含"year"和"annual_precipitation"列,你可以按照以下步骤编写代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('precipitation_data.csv')
# 确保"year"是索引列
data.set_index('year', inplace=True)
# 计算平均值、上四分位数(Q3)、下四分位数(Q1)以及中位数(Median)
stats = data['annual_precipitation'].describe([0.25, 0.5, 0.75])
# 折线图:平均值
mean_line = stats['mean']
plt.plot(data.index, mean_line, label='Average precipitation', marker='o', linestyle='-')
# 箱线图:Q1、Q3、Median
q1 = stats['25%']
q3 = stats['75%']
iqr = q3 - q1
whiskers = [q1 - 1.5 * iqr, q3 + 1.5 * iqr]
boxes = [q1, q3]
plt.boxplot(data['annual_precipitation'], positions=data.index, widths=0.8, labels=['Yearly Precipitation'], showmeans=True, showfliers=False)
# 添加标题和标签
plt.title('Annual Precipitation from 1979 to 2023')
plt.xlabel('Year')
plt.ylabel('Precipitation (inches)')
plt.legend()
# 显示图形
plt.show()
```
在这个代码中,我们首先导入必要的库,然后加载数据并设置年份作为索引。接着计算统计信息,并分别绘制折线图和箱线图。最后,我们添加标题、标签和图例,显示最终的复合图表。
阅读全文