gpt4 book ai didi

python-2.7 - 向calmap图添加颜色条

转载 作者:行者123 更新时间:2023-12-03 16:50:13 25 4
gpt4 key购买 nike

这是我第一次发帖!

我正在使用calmap来绘制漂亮的日历图来分析一些数据。日历图使用颜色图来显示天之间的对比度。我遇到的问题是,calmap 没有提供友好的工具来显示与日历图关联的颜色条。我想知道你们中的一个人是否有解决方案。理想的情况是为整个图形设置颜色条,而不仅仅是一个轴。

calmap 的文档:http://pythonhosted.org/calmap/

import pandas as pd

import numpy as np

import calmap # pip install calmap

%matplotlib inline

df=pd.DataFrame(data=np.random.randn(500,1)
,index=pd.date_range(start='2014-01-01 00:00:00',freq='1D',periods =500)
,columns=['data'])

fig,ax=calmap.calendarplot(df['data'],
fillcolor='grey', linewidth=0,cmap='RdYlGn',
fig_kws=dict(figsize=(17,8)))

fig.suptitle('Calendar view' ,fontsize=20,y=1.08)

平静图示例

enter image description here

最佳答案

在这里深入研究calmap代码martijnvermaat/calmap我明白那个

  • calendarplot 为每个子图调用多个 yearplot(在您的情况下两次)
  • yearplot 创建第一个 ax.pcolormesh有背景,然后是另一个有实际数据的,再加上一堆其他的东西。

  • 要深入了解与您可以使用的轴相关的对象(我假设您的代码导入和数据初始化在这里之前):
    ax[0].get_children()

    [<matplotlib.collections.QuadMesh at 0x11ebd9e10>,
    <matplotlib.collections.QuadMesh at 0x11ebe9210>, <- that's the one we need!
    <matplotlib.spines.Spine at 0x11e85a910>,
    <matplotlib.spines.Spine at 0x11e865250>,
    <matplotlib.spines.Spine at 0x11e85ad10>,
    <matplotlib.spines.Spine at 0x11e865490>,
    <matplotlib.axis.XAxis at 0x11e85a810>,
    <matplotlib.axis.YAxis at 0x11e74ba90>,
    <matplotlib.text.Text at 0x11e951dd0>,
    <matplotlib.text.Text at 0x11e951e50>,
    <matplotlib.text.Text at 0x11e951ed0>,
    <matplotlib.patches.Rectangle at 0x11e951f10>]

    现在,我们可以使用 fig.colorbar ( plt.colorbar 是此函数的包装器),如本答案中所建议
    Matplotlib 2 Subplots, 1 Colorbar :
    fig,ax=calmap.calendarplot(df['data'],
    fillcolor='grey', linewidth=0,cmap='RdYlGn',
    fig_kws=dict(figsize=(17,8)))

    fig.colorbar(ax[0].get_children()[1], ax=ax.ravel().tolist())

    这会产生一个垂直 colobar 引用颜色,唯一在第一个图中,但所有图的颜色都相同。

    enter image description here

    我仍然在玩轴和水平位置更好的位置,但从这里开始应该很容易。

    作为奖励,对于单个年图:
    fig = plt.figure(figsize=(20,8))
    ax = fig.add_subplot(111)
    cax = calmap.yearplot(df, year=2014, ax=ax, cmap='YlGn')
    fig.colorbar(cax.get_children()[1], ax=cax, orientation='horizontal')

    enter image description here

    关于python-2.7 - 向calmap图添加颜色条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35871379/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com