如何将垂直线添加到 Searborn 热图中。我按照下面的方法做了,没有出现任何线条。不过没有错误。我想知道这些线条是否被热图颜色覆盖?有什么建议么?谢谢
fig,ax=plt.subplots(1,1,figsize=(30,15))
g=sns.heatmap(df,cmap='coolwarm', robust=robust_colorbarrange,yticklabels=yticklabels,xticklabels=xticklabels,annot=False, \
cbar_kws={'fraction':0.02, "shrink": 1.0,'pad':0.01},vmin=colorbar_min, vmax=colorbar_max, ax=ax)
for datestr in CycleDates:
date=datetime.strptime(datestr,'%Y-%m-%d %H:%M')
ax.axvline(date,color='k',linestyle='-')
我找到了一个解决方案,包括覆盖
matplotlib.Axe
,然后在其上绘制线条:
fig, ax = plt.subplots(1, 1, figsize=(30, 15))
ax = sns.heatmap(df, ax=ax, **kwargs)
# create 2nd axis
ax2 = ax.twinx()
ax2.set_ylim(df.index.min(), df.index.max())
# and hide it
ax2.get_yaxis().set_visible(False)
ax2.grid(False)
# loop to create a line for each date as request by OP
i = 0
for datestr in CycleDates, :
date=datetime.strptime(datestr,'%Y-%m-%d %H:%M')
ax.axvline(date,color='k',linestyle='-')
ax2.vlines(date, i,i+1, color='k', linestyles='dashed')
我没有用OP代码检查这个答案,因为它不是一个独立的例子。然而,我将该解决方案应用于我的一个问题并且它有效。
基于 Akira Kashihara 的 文章,您可以使用
axvline
函数返回的 Axis
的 sns.heatmap
方法:
ax = sns.heatmap(data)
ax.axvline(x=11, linewidth=2, color="black")