当前位置: 首页 > 知识库问答 >
问题:

matplotlib。pyplot:为每个子批次使用颜色栏时对齐轴标签

曹骞仕
2023-03-14

问题:我正在使用matplotlib创建一个带有多个子情节的图形。每个子图都有x轴和y轴标签,也可能有自己的颜色条。

默认情况下,轴标签放置在刻度标记旁边(图1,左)。然而,我希望y轴标签垂直对齐(图1,右)。我使用fig.align_labels()来做这件事。

我想在每个子图上包括颜色条(图2,左)。但是,当我使用fig.align_labels()时,轴标签只是折叠到相同的位置(图2,右)。

问题:使用色条时,如何对齐y轴标签?

import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
import numpy as np

x = np.array(np.arange(5))
y = [np.random.uniform(0.5,2,5)*np.random.random(5)+100,   # <-- 'Long' tick labels
    np.random.uniform(0.5,2,5)*np.random.random(5)+100,    # <-- 'Long' tick labels
    np.random.uniform(0.5,2,5)*np.random.random(5),        # <-- 'Short' tick labels
    np.random.uniform(0.5,2,5)*np.random.random(5)]        # <-- 'Short' tick labels

fig = plt.figure()

for plotnum,yvals in enumerate(y):
    ax = fig.add_subplot(2,2,plotnum+1)
    sc = ax.scatter(x,yvals,c=yvals)
    fig.colorbar(sc, ax=ax)

    ax.set(ylabel=f'Y Values {plotnum}', xlabel=f'X Values {plotnum}')
    ax.yaxis.set_major_formatter(mtick.StrMethodFormatter('{x:,.1f}')) 

plt.tight_layout()
plt.subplots_adjust(wspace=0.8, hspace=0.6)
fig.align_labels()
plt.show()

共有1个答案

庾和昶
2023-03-14

在代码中处理此问题的最佳方法是在循环进程中添加一行。

fig = plt.figure()

for plotnum,yvals in enumerate(y):
    ax = fig.add_subplot(2,2,plotnum+1)
    sc = ax.scatter(x,yvals,c=yvals)
    fig.colorbar(sc, ax=ax)
    ax.yaxis.set_label_coords(-0.4, 0.5) # update
    ax.set_ylabel(f'Y Values {plotnum}')
    ax.set_xlabel(f'X Values {plotnum}')
    ax.yaxis.set_major_formatter(mtick.StrMethodFormatter('{x:,.1f}')) 

plt.tight_layout()
plt.subplots_adjust(wspace=0.8, hspace=0.6)
#fig.align_ylabels()

plt.show()
 类似资料:
  • 我花了太长时间研究如何在Matplotlib中使两个子图共享同一y轴,并在两个子图之间共享一个颜色条。 所发生的事情是,当我在或中调用函数时,它会自动缩放绘图,这样colorbar加上绘图就可以放在“subplot”边界框中,导致两个并排绘图的大小非常不同。 为了解决这个问题,我试图创建第三个子情节,然后我黑客攻击它,使其不呈现仅有颜色条的情节。唯一的问题是,现在两个地块的高度和宽度都不均匀,我想

  • 如何将文本标签与图中的x标记对齐?我正在使用主机。设置标签(标签,rotation='vertical'),但这似乎不起作用。我的标签是句子,有些可能比其他的小/大,比如“木乃伊归来第2部分”-我如何在x轴下方填充一个空间来容纳这个? 我需要对齐图中的“黑色”体量。 我尝试了这里的例子中的建议python旋转值在xax上不重叠-plt.xticks(x,标签,旋转='垂直'),等等,但没有工作。

  • 我在matplotlib中绘制了一个条形图,其中包括从3个不同数据帧中的一列中获取数据,具有相同的x轴,并将条形图从一侧绘制到另一侧 除了x轴只标记每五个位置而不是所有位置外,它基本上都可以工作?如何标记每个位置? 给予:

  • 问题内容: 我花了太多时间研究如何在中使用两个颜色共享的单个颜色条来使两个子图共享相同的y轴。 发生的是,当我在中调用函数时,它将自动缩放绘图,以使颜色栏和绘图可以放入“子图”边界框内,从而导致两个并排的绘图有两个截然不同的情况大小。 为了解决这个问题,我尝试创建第三个子图,然后黑客入侵它,仅用一个色条就不渲染任何图。唯一的问题是,现在两个图的高度和宽度是不均匀的,我不知道如何使它看起来还不错。

  • 问题内容: 基本上我在一个图中有两个3d轴,一个通过matplotlib.aninmation构建的动画和一个并排的3d线图。我想添加功能,以便当您旋转一个轴时,另一个跟随它的旋转。例如,将当前视角发送到另一个轴的功能,例如; 等用于比较粒子的动画路径与其预先绘制的轨迹。 问题答案: 为了使mplot3d中两个子图之间的旋转同步,您可以将其连接到一个函数,该函数从旋转的图读取角度并将其应用于其他各

  • 问题内容: 以下代码无法在Python 2.5.4上运行: 错误消息是 如何在此代码中添加颜色条? 以下是口译员信息: 问题答案: 注意:我正在使用python 2.6.2。您的代码引发了相同的错误,以下修改解决了该问题。 我阅读了以下颜色栏示例:http : //matplotlib.sourceforge.net/examples/pylab_examples/colorbar_tick_la