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

Python子图为公共轴标签留出空间

慕容文昌
2023-03-14

我有以下代码,在一个图中生成四个子图:

f = figure( figsize=(7,7) )
f.add_axes([0.2,0.175,0.75,0.75])
f.subplots_adjust(left=0.15)
f.clf()
ax = f.add_subplot(111)
ax1 = f.add_subplot(221)
ax2 = f.add_subplot(222)
ax3 = f.add_subplot(223)
ax4 = f.add_subplot(224)
ax.xaxis.set_major_formatter( NullFormatter() )
ax.yaxis.set_major_formatter( NullFormatter() )
ax2.xaxis.set_major_formatter( NullFormatter() )
ax2.yaxis.set_major_formatter( NullFormatter() )
ax1.xaxis.set_major_formatter( NullFormatter() )
ax4.yaxis.set_major_formatter( NullFormatter() )
f.subplots_adjust(wspace=0,hspace=0)

ax1.plot(tbins[0:24], mean_yszth1, color='r', label='mean', marker='.', lw=3)
ax2.plot(tbins[0:24], mean_ysz1, color='r', label='mean', marker='.', lw=3)
ax3.plot(tbins[0:24], mean_yszth2, color='r', label='mean', marker='.', lw=3)
ax4.plot(tbins[0:24], mean_ysz2, color='r', label='mean', marker='.', lw=3)

ax1.set_xlim(0,12)
ax1.set_ylim(-0.5,0.5)
ax2.set_xlim(0,12)
ax2.set_ylim(-0.5,0.5)
ax3.set_xlim(0,12)
ax3.set_ylim(-0.5,0.5)
ax4.set_xlim(0,12)
ax4.set_ylim(-0.5,0.5)
ax.set_xlabel(r"$\mathrm{Time\ since\ last\ merger\ (Gyr)}$")
ax.set_ylabel(r"$\mathrm{\Delta Y_{SZ}/Y_{SZ}}$")

如您所见,轴标签与记号重叠。我想将公共轴标签从轴上移开一点。我想不出最好的办法。

共有1个答案

方宜
2023-03-14

使用set_ylabellabelpad参数和set_xlabel方法

Definition: ax.set_ylabel(self, ylabel, fontdict=None, labelpad=None, **kwargs)
Docstring:
Call signature::

  set_ylabel(ylabel, fontdict=None, labelpad=None, **kwargs)

Set the label for the yaxis

*labelpad* is the spacing in points between the label and the y-axis

这是我将labelpad设置为50(x)和60(y)时得到的结果。当使用默认配置时,我不得不手动修改图形边距,因为标签在图形框架之外。

编辑
根据您的评论,您可能正在使用非常旧版本的matplotlib。Labelpad参数在matplotlib中已经有很多版本,但是设置它的方式可能不同(我不确定)
在web上,我找到了一些指向此用法的注释:

ax.xaxis.LABELPAD = 8  # default is 5

我也看到过这样的情况:

ax.xaxis.labelpad = 8
 类似资料:
  • 本文向大家介绍python matplotlib画盒图、子图解决坐标轴标签重叠的问题,包括了python matplotlib画盒图、子图解决坐标轴标签重叠的问题的使用技巧和注意事项,需要的朋友参考一下 在使用matplotlib画图的时候将常会出现坐标轴的标签太长而出现重叠的现象,本文主要通过自身测过好用的解决办法进行展示,希望也能帮到大家,原图出现重叠现象例如图1: 代码为: 1、解决办法1:

  • 我试图用matplotlib在另一个情节上绘制一条水平线。除了标题和轴标签永远不会显示,一切正常。这是怎么运作的? *编辑抱歉,代码看起来有点像这样:从matplotlib导入pyplot作为plt n=100 一切正常显示只是没有标题和轴标签。传说就在那里。

  • 我正在使用JFreeChart制作一个条形图与时间。由于某些原因,在这些图表上,x轴上的刻度标签变为“…”偶尔地似乎有足够的空间来扩展标签,但它只是切断了整个事情。我怎样才能解决这个问题。 我试着用图片按钮上传一张图片,但它似乎不起作用。 下面是与我的项目设置相似的代码。奇怪的是,它的行为不同于我的建筑。在我的上面,不是说“侯......”,而是说“......”。请忽略评论和所有其他未编辑的东西

  • 问题内容: 我遇到一个奇怪的情况: 我正在卷曲这样的网址: 如果我尝试使用以下方法进行测试: 这是说: 我在这里引起什么问题? 编辑 :这是idna的追溯。我猜想,它会尝试按分割输入,在这种情况下,第一个标签为空,这是第一个标签之前的速度。 问题答案: 问题是您的URL无法按照rules正确编码,该规则控制如何转换国际化域名: 域名的ASCII和非ASCII形式之间的转换是通过称为ToASCII和

  • 我正在尝试使用我自己的标签制作Seaborn条形图,代码如下: 但是,我得到一个错误: 有什么好处?

  • 问题内容: 我正在尝试使用twiny在同一张图上绘制两个单独的数量,如下所示: 并且数据显示的很好,但是我遇到的问题是,图形标题与辅助x轴上的轴标签重叠,因此几乎看不清(我想在此处发布图片示例,但我没有足够高的代表)。 我想知道是否有直接将标题直接移动几十个像素的直接方法,以使图表看起来更漂亮。 问题答案: 我不确定在更高版本的matplotlib中它是否是一项新功能,但至少对于1.3.1,这很简