将Matplotlib图形保存为全屏图像

16 python numpy data-visualization matplotlib pandas

我正在使用Pandas和MatPlotLib构建一个小图形实用程序来解析数据并从工作中的机器输出图形.

当我使用输出图表

plt.show()
Run Code Online (Sandbox Code Playgroud)

我最终得到的图像不清晰,传说和标签彼此挤在一起.

示例坏图像 但是,将窗口扩展为全屏可以解决我的问题,以允许图形可见的方式重新定位所有内容.

然后我将图形保存为类似的.png

plt.savefig('sampleFileName.png')
Run Code Online (Sandbox Code Playgroud)

但是当它保存到图像时,不会保存图表的全屏正确版本,而是保存错误的默认版本.

如何将绘图的全屏plt.show()保存为.png?

我希望我不会太困惑.

谢谢您的帮助!

gtl*_*ert 36

用于最大化窗口大小的方法取决于您使用的matplotlib后端.有关3个最常见的后端,请参阅以下示例:

import matplotlib.pyplot as plt

plt.figure()
plt.plot([1,2], [1,2])

# Option 1
# QT backend
manager = plt.get_current_fig_manager()
manager.window.showMaximized()

# Option 2
# TkAgg backend
manager = plt.get_current_fig_manager()
manager.resize(*manager.window.maxsize())

# Option 3
# WX backend
manager = plt.get_current_fig_manager()
manager.frame.Maximize(True)

plt.show()
plt.savefig('sampleFileName.png')
Run Code Online (Sandbox Code Playgroud)

您可以使用该命令确定要使用的后端matplotlib.get_backend().保存图形的最大化版本时,它将根据需要保存更大的图像.

  • 我正在使用TkAgg后端,此解决方案以最大化视图显示绘图,但将其保存为默认大小.你能帮我吗? (6认同)
  • 您还可以查看 `plt.savefig('figname.png', bbox_inches='tight')` (2认同)

kma*_*o23 8

作为另一种选择,我认为也值得研究

plt.savefig('filename.png', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

如果您的subplots轴标签看起来很杂乱,这将特别有用。


小智 5

对于使用上述解决方案未能以全屏方式保存情节的每个人,以下是对我真正有用的内容:

    figure = plt.gcf()  # get current figure
    figure.set_size_inches(32, 18) # set figure's size manually to your full screen (32x18)
    plt.savefig('filename.png', bbox_inches='tight') # bbox_inches removes extra white spaces
Run Code Online (Sandbox Code Playgroud)

您可能还想使用 dpi(每英寸点数的分辨率)

    plt.savefig('filename.png', bbox_inches='tight', dpi=100)
Run Code Online (Sandbox Code Playgroud)