爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 26979|回复: 6

[求助] calmap 绘制年日历图图报错

[复制链接]

新浪微博达人勋

发表于 2021-3-2 09:40:18 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 alment 于 2021-3-2 09:41 编辑

我在微信公众号 好奇心log 上学习了日历图的绘制,发现脚本运行不通,我上网也查了相关情况,发现运用calmap.yearplot()函数绘制年日历图,总会在1月15日出错,请问有大神可以回答一下吗?


                               
登录/注册后可看大图


beijing_2020.csv

9.04 MB, 下载次数: 16, 下载积分: 金钱 -5

heatmap_aqi.py

1.71 KB, 下载次数: 5, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-3-2 10:03:34 | 显示全部楼层
这个代码都不完整。好多东西都没定义
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-3-2 10:47:18 | 显示全部楼层
Ifare 发表于 2021-3-2 10:03
这个代码都不完整。好多东西都没定义

已解决,谢谢您的回复,calmap 包有问题,安装回0.07就好了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-3-2 11:20:52 | 显示全部楼层
alment 发表于 2021-3-2 10:47
已解决,谢谢您的回复,calmap 包有问题,安装回0.07就好了

最新的更新代码能发一下嘛
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-3-2 22:33:00 | 显示全部楼层
import glob
from datetime import datetime, timedelta
import numpy as np
import pandas as pd
import calmap

from matplotlib import cm, colors
import matplotlib.dates as mdates
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import matplotlib as mpl


## 定义可视化方法
def calendar_heatmap(df, title):
    # 定义颜色
    colors_aqi = ['#009966', '#FFDE33', '#FF9A32', '#CC0033', '#660099']
    levels = [0, 50, 100, 150, 200, 300]

    cmap_aqi = colors.ListedColormap(colors_aqi)  
    norm = colors.BoundaryNorm(levels, cmap_aqi.N)
    # 绘图
    fig, ax = plt.subplots(figsize=(18, 9))

    calmap.yearplot(
        df,              
        vmin=0,
        vmax=300,                  
        cmap=cmap_aqi,
        norm=norm,
        how=None,
        year=2020,
    )

    cbar_ax  = fig.add_axes([0.94, 0.4, 0.015, 0.2])
    cb  = mpl.colorbar.ColorbarBase(
        cbar_ax,
        cmap=cmapaqi,
        ticks=levels,              
        norm=norm,
        orientation='vertical',               
        extend='neither',
        extendrect=True,                        
        extendfrac=0.15
    )
   
    # 色标
    cb.set_ticks([0, 50, 100, 150, 200, 300])
    cb.ax.yaxis.set_tick_params(length=0.01)
    ax.set_ylabel('2020', fontdict=dict(fontsize=25, color='grey'))
   
    # 标题
    ax.set_title(f'AQI of {title}', fontweight = 'bold', fontsize = 25)
   
    # 存图
    plt.savefig(f'{title}_calendar_heatmap.png')

## 读取数据
df = pd.read_csv(r'D:\编程学习\python\calmap\beijing_2020.csv', index_col=0, header=[0,1], parse_dates=True)['AQI']

cp = df.resample('1d').mean().round(2)['昌平']
calendar_heatmap(cp, 'Changping')

dx = df.resample('1d').mean().round(2)['大兴']
calendar_heatmap(dx, 'DaXing')
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-3-2 22:38:25 | 显示全部楼层
注意:calmap已经放弃维护了,在使用过程中可能会存在问题。本文fork了原来的源码,解决了可能遇到的问题。可以从https://github.com/bugsuse/calmap下载源码,然后执行python setup.py install进行安装即可。
别用pip install calmap 安装calmap 包
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-8-25 12:23:56 | 显示全部楼层
alment 发表于 2021-3-2 22:38
注意:calmap已经放弃维护了,在使用过程中可能会存在问题。本文fork了原来的源码,解决了可能遇到的问题。 ...

谢谢你的解答,解决问题了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表