Я столкнулся со странным поведением при использовании функции matplotlibs plotfile
.
Я хотел аннотировать участок файла, text.txt
, который содержит:
x
0
1
1
2
3
, используяследующий код:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
annot = ax.annotate("Test", xy=(1,1))
plt.plotfile('test.txt', newfig = False)
plt.show()
Это дает мне следующий, странный вид графика с метками осей повсюду и аннотацией в неправильном (относительно моих данных) месте:
Однако, когда я использую
fig = plt.figure()
ax = fig.add_subplot(111)
вместо
fig, ax = plt.subplots()
, я получаю график, который хочу и предупреждение об износе:
MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
Так что я думаю, что в одном случае plt.plotfile
использует предыдущие оси, которые также использовались для создания аннотации,но я получаю предупреждение, в то время как в другом случае он создает новый экземпляр осей (так что без предупреждения), но также создает странный график с двумя наложенными осями.
Теперь я хотел бы знать две вещи:
- Почему имеет значение, как я объявляю свою фигуру и оси, когда, согласно этот ответ они должны быть взаимозаменяемыми?
- Как мне указать plotfile, на какие оси наносить график и избежать предупреждения амортизации, а также наложить его на правильные оси?Я предполагаю, что это не просто проблема с графическими файлами, а со всеми типами графиков, которые не вызываются напрямую по осям (в отличие, например,
ax.scatter, ax.plot
, ... я не могу вызвать ax.plotfile
)