南丁格尔玫瑰图绘制某城市每年气温变化图表
时间: 2023-06-20 15:05:23 浏览: 142
天气变化的图标
南丁格尔玫瑰图是一种将数据以扇形的方式表示的图表,用于显示数据在不同类别或区间中的频率分布。对于气温变化数据,你可以使用南丁格尔玫瑰图来显示每年不同温度范围的天数。下面是一个用Python中的Matplotlib库绘制南丁格尔玫瑰图的例子:
```python
import matplotlib.pyplot as plt
import numpy as np
# 构造数据,假设有20年的气温数据
years = np.arange(2000, 2020)
data = np.random.randint(-20, 40, size=(20, 12)) # 随机生成20年12个月的气温数据
# 划分温度范围和扇形角度
temps = [-20, -10, 0, 10, 20, 30, 40] # 温度范围
angles = np.linspace(0, 2*np.pi, len(temps)+1)[:-1] # 扇形角度
# 统计每年不同温度范围的天数
data_counts = []
for year_data in data:
year_counts = []
for i in range(len(temps)-1):
year_counts.append(((year_data >= temps[i]) & (year_data < temps[i+1])).sum())
year_counts.append((year_data >= temps[-1]).sum())
data_counts.append(year_counts)
# 绘制南丁格尔玫瑰图
fig, ax = plt.subplots(subplot_kw=dict(projection='polar'))
for i, year_counts in enumerate(data_counts):
ax.bar(angles, year_counts, width=angles[1]-angles[0], bottom=np.zeros_like(year_counts), alpha=0.5)
ax.plot(angles, year_counts, label=f'{years[i]}')
ax.set_theta_zero_location('N')
ax.set_theta_direction(-1)
ax.set_thetagrids(angles*180/np.pi, labels=temps)
ax.set_rlabel_position(0)
ax.legend(title='Year')
plt.show()
```
这段代码会生成一个随机的气温数据,并将数据分为7个温度范围,然后统计每年在每个温度范围内的天数,最后用南丁格尔玫瑰图将数据可视化。你可以将这段代码改为读取某城市的实际气温数据,并按照相应的温度范围划分数据,然后用南丁格尔玫瑰图来显示每年不同温度范围的天数。
阅读全文