Проблемы с макетом MatplotlibPython

Программы на Python
Anonymous
Проблемы с макетом Matplotlib

Сообщение Anonymous »

Я пишу программное обеспечение для сокращения данных массовых спецификаций на Python v3.7.9 и использую matplotlib v3.5.3 для отображения данных.
Недавно я обнаружил, что использую неправильно модуль matplotlib.pyplot, который несовместим с tkinter. Сейчас я пытаюсь переключиться на использование matplotlib.figure, который совместим (ссылка).
Это вызвало несколько проблем:
  • Макет стал намного плотнее, из-за чего оси практически перекрываются, а вокруг графиков появляется масса пробелов.
  • Я не могу добавить заголовок (

    Код: Выделить всё

    AttributeError: module 'matplotlib.figure' has no attribute 'suptitle'
    ), хотя атрибут четко определен в документации matplotlib.
Вот несколько снимков экрана до и после: первый использует matplotlib. .pyplot с плотным макетом, а второй использует matplotlib.figure с параметром макета по умолчанию.
Изображение

Ручная настройка макета как «жесткий» или «ограниченный», похоже, вообще не дает большого эффекта, равно как и оставление стиля макета неопределенным.
Есть ли способ восстановить предыдущий «расширенный» стиль макета без определения вручную множества параметров?
Вот пример скрипта для работы:

Код: Выделить всё

import customtkinter as ctk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

import matplotlib.figure as Figure

# create the window using CTK
window = ctk.CTk()

# create the plot of random data
figure = Figure.Figure(figsize=(15,9))
Figure.layout = 'tight'

# create the subplots
ax1 = figure.add_subplot(2, 3, 1)
ax2 = figure.add_subplot(2, 3, 2)
ax3 = figure.add_subplot(2, 3, 3)
ax4 = figure.add_subplot(2, 3, 4)
ax5 = figure.add_subplot(2, 3, 5)
ax6 = figure.add_subplot(2, 3, 6)

# plot data in each subplot
data = [1, 2, 3, 4, 5]
ax1.plot(data)
ax2.plot(data)
ax3.plot(data)
ax4.plot(data)
ax5.plot(data)
ax6.plot(data)

# add titles to each subplot
ax1.set_title('Subplot 1')
ax2.set_title('Subplot 2')
ax3.set_title('Subplot 3')
ax4.set_title('Subplot 4')
ax5.set_title('Subplot 5')
ax6.set_title('Subplot 6')

# Add the plot to the window
canvas = FigureCanvasTkAgg(figure, master=window)
canvas.draw()
canvas.get_tk_widget().pack(side='top', fill='both', expand=True)

exit_button = ctk.CTkButton(window, text='Exit', command=window.destroy)
exit_button.pack(side='bottom')  # add the exit button to the window

window.mainloop()
Наконец, как я уже упоминал выше, в документации matplotlib четко указан атрибут .suptitle(), однако добавлены результаты рисунка.suptitle('Data') в AttributeError: модуль «matplotlib.figure» не имеет атрибута «suptitle». Что я делаю не так?
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/785 ... t-problems

Вернуться в «Python»