【问题标题】:Matplotlib "savefig" as pdf, text overlayMatplotlib “savefig” 为 pdf,文本覆盖
【发布时间】:2018-07-11 14:54:58
【问题描述】:

如果我在 python 中运行此代码:

titles = ctf01[0,1:] 

fig = plt.figure(figsize=(11.69,8.27), dpi=100)

for num in range(len(titles)):

    ax = fig.add_subplot(3,4,num+1)

    ax.plot(ctf03[1:,num+1], ctf0102[:,num], 'ro')

    ax.set_title(titles[num])

plt.tight_layout()

fig.text(0.5, 0.04, 'CTF12', ha='center')

fig.text(0.04, 0.5, 'CTF3', va='center', rotation='vertical')

fig.savefig("example.pdf")

我在 pdf 文件中得到了这个:

我想解决红色圆圈中显示的“图形标题”的问题。 如果我将 0.04 值设置为负值,则标题缺纸。

我还想通过将子图的标题(绿色圆圈)移动到图表中来节省一些空间。知道如何实现这一点吗?

感谢您的帮助。

【问题讨论】:

    标签: python matplotlib image-resizing subplot


    【解决方案1】:

    尝试在fig.savefig("example.pdf") 之前添加以下行。

    plt.tight_layout()
    

    你的脚本中有它,但它应该在文本之后

    【讨论】:

    • 我试过了,但得到了相同的结果。 :/感谢您的回复,但仍然无法正常工作。 :(
    【解决方案2】:

    您似乎正在尝试为整个图形设置 x 和 y 标签,这是不可能的,因为这些只能在 Axes 对象上设置。幸运的是,我们可以通过创建一个填充整个区域的“不可见”子图并在其上设置标签来解决它。

    绘制子图后,您将创建不可见的子图:

    label_ax = fig.add_subplot(111, frameon=False)
    

    frameon 参数阻止它绘制由默认样式添加的框。然后你告诉它不要画刻度线并使刻度标签不可见(我们不能只删除它们,因为它会弄乱间距)。

    label_ax.tick_params(bottom=False, left=False, labelcolor="none")
    

    最后,设置你的标签:

    label_ax.set_xlabel("CTF12")
    label_ax.set_ylabel("CTF3")
    

    您可以通过向set_title 函数提供pad 参数来调整绘图标题的垂直位置。给出负值会将标题推入情节,您需要反复试验才能找到有效的值。

    把它们放在一起(用虚构的数据):

    fig = plt.figure(figsize=(11.69, 8.27), dpi=100)
    for i in range(10):
        ax = fig.add_subplot(3, 4, i + 1)
        ax.plot([1, 2, 3, 4, 5], "ro")
        ax.set_title("Plot {}".format(i), pad=-15)
    
    label_ax = fig.add_subplot(111, frameon=False)
    label_ax.tick_params(bottom=False, left=False, labelcolor="none")
    label_ax.grid(False)  # In case the current style displays a grid.
    label_ax.set_xlabel("CTF12")
    label_ax.set_ylabel("CTF3")
    
    fig.tight_layout()
    fig.savefig("example.pdf")
    

    这给出了:

    【讨论】:

      猜你喜欢
      • 2018-08-08
      • 2012-10-07
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 2015-11-30
      相关资源
      最近更新 更多