【问题标题】:How do I set the size of the axes patch so that the plot labels aren't clipped (matplotlib)如何设置轴补丁的大小,以便不剪裁绘图标签(matplotlib)
【发布时间】:2015-01-29 04:53:10
【问题描述】:

我有一个图表,其中我使用

将轴标签设置为科学记数法

formatter = mpl.ticker.FormatStrFormatter('%4.2e') axis2.yaxis.set_major_formatter(formatter)

但是,axes.patch(或任何表达绘图“画布”范围的正确方法)没有调整,因此刻度标签和轴标签被剪裁:

如何调整绘图轴部分的范围。更改页面大小 (figsize = ...) 不会这样做,因为这只会缩放整个绘图区域,导致相同的剪切问题。

【问题讨论】:

    标签: python matplotlib plot


    【解决方案1】:

    您可以使用方法tight_layout,它将容纳图中可用空间中的绘图。

    例子

    from pylab import *
    f = figure()
    f.add_subplot(111)
    f.tight_layout()
    show()
    

    希望对你有帮助。

    干杯

    【讨论】:

    • 为了清楚起见,我将在此处添加,如果您的绘图使用其他命令,如 set_ylabel,则应在添加绘图的所有元素后调用tight_layout。基本上,它应该是 show() 或 savefig 之前的最后一次调用。有一些东西与tight_figure 和 pdf 后端不兼容。调用tight_figure 会导致警告“回退到Agg 渲染器”。但是,您仍然可以获得 pdf 输出。
    • 使用 savefig('filename', bbox_inches = 'tight') 会消除警告,但它也会覆盖代码中前面设置的任何 figsize 值。
    • 这个答案解决了所提出的问题,但还有其他原因可能希望在不更改纸张大小(或屏幕区域)的情况下设置绘图大小,也许是为了留下更大的边距。 savefig 关键字 arg pad_inches 将填充边距。这是一个一元参数 - 您必须将所有边距都填充相同。此外,此填充是在设置 figsize 之后应用的,因此如果您想要填充和特定的 figsize,请在传递 figsize 关键字时从所需大小中减去填充。
    【解决方案2】:

    只需调用fig.tight_layout()(假设您定义了一个 Figure 对象)。

    【讨论】:

      猜你喜欢
      • 2012-09-11
      • 2019-05-23
      • 2019-02-20
      • 2014-09-05
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多