我将pandas数据框绘制到一个海洋的热图上,并且我想为特定位置设置特定的y轴刻度。
我的数据框索引是100行,它对应于一个“深度”参数,但是此索引中的值没有以适当的间隔排列:
我想将刻度标签设置为100的倍数。我可以使用以下方法做到这一点:
yticks = np.linspace(10,100,10)
ylabels = np.linspace(100,1000,10)
对于我的具有100行的数据框,其值的范围大约为100-1000,但是结果显然是不可取的,因为刻度标签的位置显然不对应于正确的深度值(索引值),只有位置在指数。
如何在图变形的地方生成热图,以使实际深度值(索引值)与我设置的ylabel对齐?
一个复杂的因素是索引值不是线性采样的。
最佳答案
我的解决方案有点难看,但对我有用。假设您的深度数据在depth_list
中,而num_ticks
是您想要的刻度数:
num_ticks = 10
# the index of the position of yticks
yticks = np.linspace(0, len(depth_list) - 1, num_ticks, dtype=np.int)
# the content of labels of these yticks
yticklabels = [depth_list[idx] for idx in yticks]
然后以这种方式绘制热图(您的数据在
data
中):ax = sns.heatmap(data, yticklabels=yticklabels)
ax.set_yticks(yticks)
plt.show()
关于python - Seaborn热图,自定义刻度值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47784215/