【问题标题】:Increase distance between title and plot in matplolib? [duplicate]增加matplotlib中标题和绘图之间的距离? [复制]
【发布时间】:2013-05-01 10:38:45
【问题描述】:

我在 matplotlib 中有一个简单的绘图,我想增加标题和绘图之间的距离(不使用 suptitle,因为它不适用于我在服务器上使用的版本)。该怎么做?

【问题讨论】:

  • 不能简单地在标题后面放一些空行吗?你甚至可以使用textlinespacing kwarg。
  • 我发现只是在字符串离开我需要的空间之后添加了 \n

标签: python matplotlib plot title margins


【解决方案1】:

使用matplotlib 2.2+,您可以使用关键字参数pad

ax.set_title('Title', pad=20)

调整pad,直到您对轴标题位置感到满意为止。这种方法比使用rcParams 的优点是它只改变了这一轴标题。

【讨论】:

  • 谢谢!你知道如何为 ax 标签添加内边距吗?
  • 您可以使用ax.xaxis.labelpad=10.0 以及yaxiszaxis
  • 为什么它没有被标记为答案?谢谢,顺便说一句!
  • @TedoVrbanec 对于轴标签,您可以使用ax.set_xlabel('label', labelpad=20)。调整labelpad 参数,直到满意为止。
  • 这应该是公认的答案。
【解决方案2】:

似乎没有一种直接设置它的干净方法(但可能值得一个功能请求来添加它),但是标题只是text 艺术家,所以你可以进入并更改它。

#ax = plt.gca()
ttl = ax.title
ttl.set_position([.5, 1.05])
#plt.draw()

应该可以解决问题。根据您的喜好调整1.05

【讨论】:

    【解决方案3】:

    您可以将y 参数传递给plt.suptitle 方法:

    plt.suptitle('Amazing Stats', size=16, y=1.12);      
    

    【讨论】:

    • 好!在 matplotlib v2.0.0 它也适用于 plt.title()
    【解决方案4】:

    使用rcParams

    from matplotlib import rcParams
    rcParams['axes.titlepad'] = 20 
    

    其中20 是情节和标题之间的填充。

    来自https://matplotlib.org/users/customizing.html

    【讨论】:

    • 链接中的文档仅列出了“axes.titlepad”。可能是错字?
    • @keisuke 正确。感谢您发现这一点。我已经更新了答案。
    • 在 Python3 "KeyError: 'axes.titlepad is not a valid rc parameter".
    • @GennaroTedesco 你在使用最新版本的 matplotlib 吗?
    【解决方案5】:

    另一种可能性是减小绘图相对于整个图形窗口的相对大小。这样,标题和情节之间的距离就会增加。

    在显示情节之前,即plt.show()之前,编写以下命令:

    #The standard value of 'top' is 0.9, tune a lower value, e.g., 0.8
    plt.subplots_adjust(top=0.8) 
    

    这个方法比@CanCeylan 方法的优点是标题永远不会超出图形窗口;因为如果标题足够大,那么通过suptitle 中的参数y 向上移动它可能会将标题移动到图形之外。 (因为它发生在我身上;))

    【讨论】:

    • 我有一个旧版本的 matplotlib ...所以我无法使用“axes.titlepad”解决方案。所以你的效果很好!谢谢一百万。