Сохранение того, что я вижу в PyPlot - PullRequest
0 голосов
/ 03 мая 2019

Кажется, я не могу понять, что я должен делать в 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()

Это то, что я вижу на экране, которое я сохранил с помощью графического интерфейса: Shown on screen, and saved using the Python GUI

Это изображение, сохраненное savefig:

Saved by savefig

Если я использую fig.savefig(...) вместо plt.savefig(...), ничего не изменится.

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Скажем, у вас разрешение монитора 1080 пикселей по вертикали. Может быть, у вас есть панель задач, а также окно рисунка matplotlib имеет заголовок и панель навигации. Таким образом, в общей сложности у вас может быть около 950 пикселей для отображения вашей фигуры. Это означает, что высота фигуры в дюймах не должна превышать 950 / dpi. В вашем случае

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

И наоборот, если вы действительно хотите показать и сохранить 16-дюймовую фигуру с разрешением 100 точек на дюйм, вам нужно добавить полосу прокрутки к окну вашей фигуры, аналогично Полоса прокрутки на Matplotlib, показывающей страницу .

0 голосов
/ 03 мая 2019

Вы пытались изменить размеры следующим образом:

Если вы уже создали фигуру, вы можете быстро сделать это:

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

Чтобы распространить изменение размера на существующий графический интерфейсокно добавления вперед = True

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

из этой темы: Как изменить размер фигур, нарисованных с помощью matplotlib?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...