gpt4 book ai didi

python - Matplotlib:cbar.set_xticklabels 没有效果

转载 作者:太空宇宙 更新时间:2023-11-04 00:52:48 25 4
gpt4 key购买 nike

我已将一年中的 365 天分配给几个集群,现在我正在尝试将它们绘制在热图上。

我的代码工作正常,除了 cbar.set_ticks(some_range) 没有效果:我的颜色栏上的刻度标签有正确的文本,但位置错误 a colorbar with wrong yticks

这是一个MCVE

from datetime import date
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
import matplotlib
import seaborn as sns

#create some random data
n_cluster = 4
index = pd.date_range('01/01/2016', end='31/12/2016', freq='1D')
df = pd.DataFrame(np.random.randint(0, n_cluster, len(index)),
index=index, columns=['cluster'])

pivot = df.pivot_table('cluster',
columns=[lambda x: x.weekofyear],
index= [lambda x: x.dayofweek])

#yticklabels of the heatmap
days = [date(2018, 1, d).strftime('%a')[:3] for d in range(1, 8)]

#get a discrete cmap
cmap = plt.cm.get_cmap('RdBu', n_cluster)

fig = plt.figure(figsize=(10,3))
gs = matplotlib.gridspec.GridSpec(1, 2, width_ratios=[50,1])
ax = plt.subplot(gs[0])
cbar = plt.subplot(gs[1])
sns.heatmap(pivot, square=True, cmap=cmap,
yticklabels=days, ax=ax, cbar_ax=cbar)

#There is something wrong here
cbar.set_yticks([i + 1/(2.0*n_cluster) for i in np.arange(0, 1, 1.0/n_cluster)])

#This one is ok
cbar.set_yticklabels(range(0, n_cluster))

谢谢你的帮助

最佳答案

作为变通方法,下面的代码在正确的位置添加了正确的标签,

cbar.yaxis.set_ticks([0.125, 0.375, 0.625, 0.875])

看起来像 enter image description here

编辑:或者 mfitzp 更一般的建议,

cbar.yaxis.set_ticks([i + 1/(2.0*n_cluster) 
for i in np.arange(0, 1, 1.0/n_cluster)])

关于python - Matplotlib:cbar.set_xticklabels 没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36445217/

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