У меня есть matplotlib, встроенный в графический интерфейс tkinter.С помощью функции тепловой карты seaborn я создаю тепловую карту и цветовую панель, которая работает так, как я хочу при создании первого графика.Однако, если я нанесу график снова, это не перезапишет цветную полосу, но добавит другую цветную полосу к моей фигуре.Таким образом, я получаю множество цветовых полос.
Фигура, которую я создаю для графика, содержит две оси:
[<matplotlib.axes._subplots.AxesSubplot object at 0x000001F36C8C3390>, <matplotlib.axes._subplots.AxesSubplot object at 0x000001F36D6ABF98>]
первая - это сам график, а вторая - цветовая полоса и внешний вид.например: сюжет 1
Если я построю график снова, результат будет следующим: сюжет 2
Простое удаление цветовой шкалы с помощью
self.fig.axes[1].remove()
перед созданием следующего графика не работает, потому что он просто удалит цветную полосу, но компоновка графика продолжает уменьшаться:
сюжет 3 сюжет 4
Обратите внимание, что размер рисунка остается тем же, но размер графика продолжает уменьшаться, когда я снова строю график, и цветовая полоса перемещается дальше влево, в то время как вся правая часть графика остается белой.
Когда я создаю графический интерфейс tkinter, окно печати инициализируется при первом запуске программы.
self.fig = plt.figure.Figure( facecolor = "white", figsize = (7,4))
self.ax = self.fig.subplots()
self.x_data = x_data
self.y_data = y_data
когда кто-то нажимает кнопку графика, график создается
def plot_on_plotframe(self):
self.ax.cla()
#executes required matplotlib layout
self.plotlayout[self.plot_type]()
print('plottype: {}'.format(self.plot_type))
#print('Plot xdata: {}'.format(self.x_data))
self.canvas.draw()
Мне нужно сделать разные типы сюжета и рТип roper выбирается plotlayout:
self.ax = sns.heatmap(self.x_data, vmin=self.settings[2][0], vmax=self.settings[2][1], cmap='viridis', fmt=self.settings[0], annot=self.settings[1], linewidths=0.5, annot_kws={'size': 8}, ax = self.ax)
self.ax.set_xticklabels(self.ax.get_xticklabels(), rotation=0)
self.fig.tight_layout()
Было бы замечательно, если бы кто-нибудь мог сказать мне, почему matplotlib портится с макетом, даже после того, как я в первую очередь удаляю старую цветовую панель.Я думаю, что это как-то связано с gridSpec, но я не понимаю, как сказать matplotlib для правильного сброса макета.Также есть еще какие-нибудь предложения о том, как это восстановить?
Заранее спасибо