Как я могу заставить matplotlib забыть об удаленных элементах графика?

#python #matplotlib

#python #matplotlib

Вопрос:

Я использую matplotlib в графическом интерфейсе, и элементы приходят и уходят из графика. Я пытаюсь сохранить привязку оси к данным, но заметил, что если элемент удаляется, axis('tight') ось все равно расширяется, как если бы она была там. Как это можно решить?

Пример:

 fig,ax = plt.subplots()
h1 = ax.plot(1,1,'.')
h2 = ax.plot(10,10,'.')
h3 = ax.plot(20,20,'.')
ax.axis('tight')  # (1,20,1,20)
h3[0].remove()
ax.axis('tight')  # still (1,20,1,20), desire (1,10,1,10)
 

Ответ №1:

После удаления элемента из графика вызовите ax.relim() ось, чтобы она пересчитала ограничения перед вызовом ax.axis('tight') .

 import matplotlib.pyplot as plt

fig,ax = plt.subplots()
h1 = ax.plot(1,1,'.')
h2 = ax.plot(10,10,'.')
h3 = ax.plot(20,20,'.')
ax.axis('tight')  # (1,20,1,20)
h3[0].remove()
ax.relim()        # recalculates that limits for the axis
ax.axis('tight')  # will rescale the plot correctly to the new limits
plt.show()
 

Комментарии:

1. Это то, что мне было нужно. К сожалению, есть ошибка, которая не позволяет ему работать с данными графика imshow(), по крайней мере, в более старых версиях. Я просто нарисовал несколько маленьких точек по углам в качестве обходного пути.