当前位置: 首页 > 面试题库 >

Matplotlib subplots_adjust hspace以便标题和xlabel不重叠?

贺运良
2023-03-14
问题内容

例如,在matplotlibxlabels中有3行子图,其中一行可以与下一行的标题重叠。人们不得不摆弄pl.subplots_adjust(hspace),这很烦人。

是否有hspace防止重叠并适用于任何结石的配方?

""" matplotlib xlabels overlap titles ? """
import sys
import numpy as np
import pylab as pl

nrow = 3
hspace = .4  # of plot height, titles and xlabels both fall within this ??
exec "\n".join( sys.argv[1:] )  # nrow= ...

y = np.arange(10)
pl.subplots_adjust( hspace=hspace )

for jrow in range( 1, nrow+1 ):
    pl.subplot( nrow, 1, jrow )
    pl.plot( y**jrow )
    pl.title( 5 * ("title %d " % jrow) )
    pl.xlabel( 5 * ("xlabel %d " % jrow) )

pl.show()

我的版本:

  • matplotlib 0.99.1.1,
  • Python 2.6.4,
  • Mac OSX 10.4.11,
  • 后端:Qt4AggTkAgg=>异常在Tkinter的回调)

(关于其他几点,有谁能像Tcl/Tk书中第17章“包装器”那样概述matplotlib的包装器/分隔器的工作原理?)


问题答案:

我觉得这很棘手,但是MatPlotLib常见问题解答上有一些有关此方面的信息。这很麻烦,并且需要找出各个元素(刻度标签)占用的空间…

更新: 该页面指出该tight_layout()功能是最简单的方法,它会尝试自动更正间距。

否则,它显示了获取各种元素(例如标签)大小的方法,因此您可以更正轴元素的间距/位置。这是上述FAQ页面中的示例,该示例确定非常宽的y轴标签的宽度,并相应地调整轴宽度:

import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(10))
ax.set_yticks((2,5,7))
labels = ax.set_yticklabels(('really, really, really', 'long', 'labels'))

def on_draw(event):
   bboxes = []
   for label in labels:
       bbox = label.get_window_extent()
       # the figure transform goes from relative coords->pixels and we
       # want the inverse of that
       bboxi = bbox.inverse_transformed(fig.transFigure)
       bboxes.append(bboxi)

   # this is the bbox that bounds all the bboxes, again in relative
   # figure coords
   bbox = mtransforms.Bbox.union(bboxes)
   if fig.subplotpars.left < bbox.width:
       # we need to move it over
       fig.subplots_adjust(left=1.1*bbox.width) # pad a little
       fig.canvas.draw()
   return False

fig.canvas.mpl_connect('draw_event', on_draw)

plt.show()


 类似资料:
  • 有没有一种方法可以直接将标题(以及xlabel和ylabel)添加到plt.scatter(x,y,…)或plt.plot(x,y,…)中,而无需写额外的行? 当我们使用Series_name.plot时,很容易添加它,我们简单地写Series_name.plot(...,title='name'),但是如果我写:plt.scatter(...,title='name',它对我不起作用')或plt

  • 问题内容: 我正在尝试使用绘制多个热图。我发现一个示例如下: 如果我注释以下两行,则代码成功(在上面的示例中完成): 如果使用这两行,则会收到错误消息: 我该如何纠正? 谢谢大家的帮助!!! 问题答案: 使用matplotlib面向对象的接口时,要使用的正确命令是和。 (对于状态机接口,将其与等比较)。 同样,要设置标题,您需要 您可以在api文档中(此处)查看实例的所有可用方法。

  • 我有一个壁纸网站在线,为了优化SEO,站长工具标记29个重复的元描述和标题标签。 每当我点击一个菜单或子菜单链接,例如,“计算机”,我希望标题,元描述,标题标签,关键字,以反映术语计算机更新。 一个重要的事实是,当我单击菜单时,数据被异步加载到content div上。 我想我应该在点击菜单项时开始更新Url,然后使用jquery更新标题和元数据,这会帮助改善搜索结果吗? 提前致谢 [更新]

  • 我已经浪费了很多时间试图从我的AMP页面重定向到其他页面。提交表单时,xhr操作通过POST发送数据来调用php文件。此php文件设置一个新位置,将页面重定向到另一个位置。我在php文件中要重定向的代码如下: 该过程到达实体_并正确解码,我放在头中的url(ulr)是正确的。我从chrome网络分析中得到的响应是下一个(我不明白为什么同一个url存在两个启动器,而且它们不工作)。错误日志: 获取A

  • 我想设置我的情节标题和x和y标签。总数都是浮点数64.我想尽可能简单地做这件事。 以下是我的代码部分:

  • 我使用phpmailer发送电子邮件,我检查添加一些地址时,其中只有一个地址无效(不存在),例如。“asdfasfasf@asdfasdfsfsfs.commm“并发送电子邮件我看到电子邮件已发送(到正确的地址)我不知道如何在发送电子邮件之前检查其中一个地址是否错误,以便能够记录该问题。 发送和添加地址的代码如下: 提前谢谢