保存我在PyPlot中看到的内容

时间:2019-05-03 11:22:38

标签: python matplotlib

为了完全或多或少地保存我在屏幕上看到的内容,似乎我无法理解在Python MatplotLib中应该做的事情。

这是我准备的测试代码:

import matplotlib.pyplot as plt
import numpy as np

def main():
    values = [712, 806, 858, 990, 1158, 1126, 166]
    xlabels = np.arange(2013, 2020)
    ylabels = ylabels = np.arange(400,1300,400)
    index = np.arange(len(xlabels))

    fig = plt.figure(1, figsize=(12,16), dpi=100)
    plt.bar(index, values, color='grey')
    plt.xticks(index, xlabels, fontsize=30)
    plt.yticks(ylabels, ylabels, fontsize=30)
    plt.ylim((0, 1400))
    plt.title('Title', fontsize=40)

    plt.savefig('../figs/test.png')
    plt.show()

# -----------------------------------------
if __name__ == "__main__":
    main()

这是我在屏幕上看到的,是使用GUI保存的: Shown on screen, and saved using the Python GUI

这是savefig保存的图像:

Saved by savefig

如果我使用fig.savefig(...)代替plt.savefig(...),则没有任何变化。

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

假设您的显示器在垂直方向上的分辨率为1080像素。也许您有一个任务栏,并且matplotlib图窗口有一个标题和导航栏。因此,总共可能有950像素可显示您的身材。这意味着以英寸为单位的图形高度不应大于950 / dpi。就您而言

fig = plt.figure(figsize=(12, 950./100), dpi=100)

相反,如果您真的想显示并保存100 dpi的16英寸图形,则需要向图形窗口添加一个滚动条,类似于Scrollbar on Matplotlib showing page

答案 1 :(得分:0)

您是否尝试过这样调整大小:

如果您已经创建了图形,则可以快速执行以下操作:

fig.set_size_inches(12,16)
fig.savefig('../figs/test.png', dpi=100)

要将尺寸更改传播到现有的GUI窗口,请添加forward = True

fig.set_size_inches(12,16, forward=True)

从本主题开始: How do you change the size of figures drawn with matplotlib?