将Matplotlib图形保存为全屏图像

时间:2015-09-06 20:52:12

标签: python pandas numpy matplotlib data-visualization

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

当我使用

输出图表时
plt.show()

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

Sample Bad Image 但是,将窗口扩展为全屏可以解决我的问题,以允许图形可见的方式重新定位所有内容。

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

plt.savefig('sampleFileName.png')

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

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

我希望我不会太困惑。

感谢您的帮助!

5 个答案:

答案 0 :(得分:33)

用于最大化窗口大小的方法取决于您使用的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')

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

答案 1 :(得分:2)

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

plt.savefig('filename.png', bbox_inches='tight')

如果您正在使subplots的轴标签看起来混乱,这将非常有用。

答案 2 :(得分:2)

对于使用上述解决方案未能全屏保存地块的每个人,这对我来说确实有效:

var s = "19971998";
String.Format("{0}-{1}", s.Substring(0,4), s.Substring(4, 4)));

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

    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

答案 3 :(得分:0)

对于那些在上述答案中收到错误的人,这对我有用。

#Show full screen
mng = plt.get_current_fig_manager()
mng.full_screen_toggle()

答案 4 :(得分:0)

我找到了最常见的答案on this website。所有这些答案都是一团糟。 似乎可以在所有情况下使用它而不会出现兼容性问题。

如果您对此答案有任何疑问,请随时发表评论。

# Maximise the plotting window
plot_backend = matplotlib.get_backend()
mng = plt.get_current_fig_manager()
if plot_backend == 'TkAgg':
    mng.resize(*mng.window.maxsize())
elif plot_backend == 'wxAgg':
    mng.frame.Maximize(True)
elif plot_backend == 'Qt4Agg':
    mng.window.showMaximized()