【问题标题】:How to add a second scale to a heatmap?如何在热图中添加第二个比例?
【发布时间】:2019-01-27 22:53:49
【问题描述】:

这样我创建了我的heatmap

fig = plt.figure(figsize = (8.27, 13.69), dpi = 100)

fig, ax = plt.subplots(1,1,figsize = (8.27, 13.69))
fig = plt.gcf()

heatplot = ax.imshow(c, cmap='rainbow', aspect='auto',\
                         norm=MidpointNormalize(midpoint=0.90))

c 是具有heatmap 值的数组,标准化为一。

使用ax.set_xticklabels()ax.set_xticks()ax.set_yticklabels()ax.set_yticks(),我已将轴添加到其heatmap。现在我想添加第二个y-axis。 colorbar 的方向是水平的。

编辑:

在 Bazingaa 的帮助下,我有了第二个 y 轴,但有一个偏移量:

ax1.set_yticks(np.arange(len(TITLES)), minor=False) 使刻度居中。

【问题讨论】:

    标签: python matplotlib heatmap


    【解决方案1】:

    我认为使用子图可以减少混乱,并将两个热图并排放置

    【讨论】:

      【解决方案2】:

      以这种方式解决了我的问题的编辑部分

      ax2.set_ylim(ax1.get_ylim()) <-- This solvs the "Offset" between both scales
      
      ax2.set_yticks(np.arange(len(ELEMENT[1])), minor=False)
      ax2.set_yticklabels(ELEMENT[1])
      

      我在哪里找到的?: How do I align gridlines for two y-axis scales using Matplotlib?

      回答者:Hugo Alain Oliva

      【讨论】:

        【解决方案3】:

        要添加第二个y 轴,您必须使用:

        ax2 = ax1.twinx()
        

        其中ax1 是当前/第一个轴。在您的情况下,ax1ax。然后,如果您使用ax2 绘制数据,y 值将显示在右侧y 轴上。更多信息here

        【讨论】:

        • 哦,我现在明白你的意思了。要使y 轴具有相同的刻度,您可以使用ax.set_ylim(a, b)ax2.set_ylim(a, b) 其中ab 是您希望在y 刻度上看到的最小和最大y 值.在这里,我假设您的轴命名为 axax1。如果您有其他名称,例如 ax1ax2,请进行相应修改
        • 不,不,我有相同的限制,但左右之间有一个偏移量。 :-/
        • 我想我必须研究这个:stackoverflow.com/questions/25159495/…
        • 是的,这正是您所面临的。您是否尝试过 ax.set_yticks(np.arange(len(TITLES)), minor=False)ax1.set_yticks(np.arange(len(TITLES)), minor=False)。我的意思是两个轴的范围完全相同?你还遇到同样的问题吗?
        • 此链接的最后回答:stackoverflow.com/questions/26752464/… 解决了 mit 问题。 :)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-11
        • 2018-04-20
        • 1970-01-01
        • 1970-01-01
        • 2016-10-28
        • 1970-01-01
        • 2021-07-27
        相关资源
        最近更新 更多