有一个月的温度数据,想要画一个日历,是一个单个月份的日历,上面有日期,然后温度超过35度的在日历对应的日期格子里填红,怎么画?
时间: 2024-03-15 11:43:51 浏览: 14
你可以使用Python中的第三方库,如matplotlib和calendar来绘制带有日期和颜色填充的日历。下面是一个简单的例子,展示了如何使用matplotlib来创建这样的图表:
```python
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import calendar
# 创建一个月的日期范围
month = 7
year = 2022
days_in_month = calendar.monthrange(year, month)[1]
date_range = pd.date_range(start=f'{year}-{month}-01', end=f'{year}-{month}-{days_in_month}')
# 创建一个随机温度数据列
temps = np.random.randint(20, 40, len(date_range))
# 将日期和温度数据转换为适合绘制的格式
dates = mpl.dates.date2num(date_range.to_pydatetime())
temps = np.array(temps)
# 设置绘图参数
cmap = mpl.colors.ListedColormap(['white', 'red']) # 设置颜色映射
bounds = [0, 35, 40] # 设置颜色映射的范围
norm = mpl.colors.BoundaryNorm(bounds, cmap.N) # 设置颜色映射的范围
fig, ax = plt.subplots(figsize=(8, 6))
# 绘制日历热图
ax.pcolor(dates.reshape(5, -1), np.arange(7), temps.reshape(5, -1), cmap=cmap, norm=norm)
# 设置轴标签和标题
ax.set_xticks(dates[2::7])
ax.set_xticklabels(date_range[2::7].strftime('%d'))
ax.set_yticks(np.arange(7) + 0.5)
ax.set_yticklabels(calendar.day_abbr)
ax.set_title(f'{calendar.month_name[month]} {year} Temperatures', fontsize=16)
# 显示图例
cbar = plt.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap), ticks=bounds, boundaries=bounds)
cbar.set_ticklabels(['<35', '>=35'])
# 显示图表
plt.show()
```
这个例子将随机生成的温度数据填充到格子里,并使用`white`和`red`两种颜色来表示温度是否超过35度。你可以根据需要调整颜色映射和其他参数,以满足你的需求。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)