#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(), по крайней мере, в более старых версиях. Я просто нарисовал несколько маленьких точек по углам в качестве обходного пути.