【问题标题】:matplotlit colorbar title hangs outside figurematplotlib colorbar 标题挂在图外
【发布时间】:2021-04-28 17:30:39
【问题描述】:

在确保图例标题位于图中的同时指定颜色条图例位置的最佳方法是什么?有时位置会在右上角,如此处所示;但在其他图中,它将是可变的,左上/右下。

解决方案不用inset_axes()也可以。

替代方案: 如果颜色条图例在子图的右侧,如果“我的图例”标题是垂直和左侧,刻度标签在右侧和水平(我不知道该怎么做)也可以那个)。

使用 Python 3.8。

## Second Plot
vals2 = ax2.scatter(df.x, df.y, edgecolors = 'none', c = df.z,
            norm = mcolors.LogNorm(), cmap=rainbow)
ax2.set_aspect('equal')
ax2.set_title('Subplot Title', style='italic');
ax2.set_xlabel('x');
ax2.set_ylabel('y');

cbaxes = inset_axes(ax2, width="30%", height="10%", location = 'upper right')
clb = plt.colorbar(vals2, cax=cbaxes, format = '%1.2f', orientation='horizontal');
clb.ax.set_title('My Legend')

【问题讨论】:

  • inset_axes() 中使用loc=1 将颜色条的位置固定在upper-right 位置。
  • plt.colorbar(..., label='My Legend') 而不是设置标题?
  • @JodyKlymak 将其放在底部。我想要没有悬垂的相同配置。
  • 您可以绘制颜色条,使用ax.get_window_extent 获取坐标区范围,然后将其移动到坐标区内部。这有点乱,但不是太难。但如果是我,我只会把轴放在右边,标签和刻度放在右边。您可能还想使用ax.inset_axes,这将允许您将颜色条放置在轴或数据单元中:matplotlib.org/stable/api/_as_gen/…
  • @JodyKlymak 如何将颜色条垂直放置在右侧,刻度标签在右侧,标题在左侧?

标签: matplotlib legend python-3.8 subplot colorbar


【解决方案1】:

我仍然希望将颜色条(带有刻度标签和标题)在子图内;但我确实找到了一种方法来解决替代解决方案

vals2 = ax2.scatter(df.x, df.y, edgecolors = 'none', c = df.z,
            norm = mcolors.LogNorm(), cmap=rainbow)
ax2.set_aspect('equal')
ax2.set_title('Subplot Title', style='italic');
ax2.set_xlabel('x');
ax2.set_ylabel('y');
clb = fig.colorbar(slips2, ax=ax2, format = '%1.2g', location='right', aspect=25)
clb.ax.set_ylabel('My Legend')
clb.ax.yaxis.set_label_position('left')

颜色条比子图高,因为 ax2 根据另一个子图中的限制(ax1,未显示)被限制为相等的 xy 纵横比。

【讨论】:

    猜你喜欢
    • 2020-06-04
    • 2013-03-07
    • 2015-04-19
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多