Похоже, showMaximized()
был применен только к отображаемому рисунку, а не к сохраненному, поэтому единственное решение, которое я нашел, - это избавиться от showMaximized()
, найти размер экрана с помощью tkinter и использовать ихразмеры для указания размера рисунка:
import tkinter as tk
root = tk.Tk()
width = root.winfo_screenwidth()
height = root.winfo_screenheight()
возвращает высоту и ширину экрана в пикселях
mydpi = 100
fig, ax = plt.subplots(figsize=(width/mydpi, height/mydpi), dpi=mydpi)
устанавливает dpi фигуры и использует размеры, найденные ранее дляустановите размер рисунка в полноэкранном режиме.
Наконец, полный код:
import numpy as np
import matplotlib.pyplot as plt
import tkinter as tk
root = tk.Tk()
width = root.winfo_screenwidth()
height = root.winfo_screenheight()
mydpi = 100
x = np.arange(0,10,0.01)
y1 = np.sin(x)
y2 = np.sin(3*x)
y3 = np.sin(5*x)
fig, ax = plt.subplots(figsize=(width/mydpi, height/mydpi), dpi=mydpi)
plt.subplots_adjust(bottom=0.09, top=0.96, right=0.97, left=0.07)
plt.plot(x,y1, 'C0', linewidth = 2)
plt.plot(x,y2, 'C1', linewidth = 2)
plt.plot(x,y3, 'C2', linewidth = 2)
plt.xlabel('x label', fontsize=18)
plt.ylabel('y label', fontsize=18)
plt.xticks(color='k', size=16)
plt.yticks(color='k', size=16)
plt.grid()
plt.legend(['blue', 'red', 'green'], fontsize=16)
fig.savefig('coco_gcf-dpi.png', dpi=plt.gcf().dpi, bbox_inches = 'tight')
plt.show()
И вот, наконец, мой график сохранен в точности так, как я вижу его на моем экране.!