Редактирование осей в интерактивном режиме ion () в matplotlib игнорируется - проблема объема? - PullRequest
1 голос
/ 11 апреля 2019

Я хотел бы построить график из массива данных, который растет со временем. Я нашел ion (), чтобы перерисовать мой график, добавив новые точки. Теперь добавление новой точки должно стереть старую, и для достижения этой цели мне пришлось добавить clf (). Это снова означает, что я должен сбрасывать свои изменения оси каждый раз, когда я строю график, но он игнорирует каждую модификацию, которая зависит от ручки оси. Мне было интересно, если это проблема объема из-за функции, которую я вызываю? Я новичок в Python и также буду признателен за обратную связь в случае более простого подхода, чем выбранный.

Я пытался передать ручку оси через различные функции в надежде, что это что-то изменит, но безуспешно.

import matplotlib.pyplot as plt
import matplotlib.ticker as tck
from time import time

x, y = [], []
counter = 0
plt.ion()
fig, ax1 = plt.subplots()      # ax1 is not used

def axis(ax):
    ax.set_label("Time [s]")
    ax.yaxis.set_major_locator(tck.MultipleLocator(base=0.5))

def plot():
    plt.clf()
    ax = plt.gca()
    axis(ax)
    if len(y) < 3:
        plt.plot(x, y, c='r')
    else:
        plt.plot(x[-3:], y[-3:], c='r')
    plt.draw()
    return ax


for i in range(0,10):
    x.append(time())
    y.append(counter)
    print(i, '\n')
    ax = plot()
    counter +=1
    plt.pause(1)

1 Ответ

0 голосов
/ 16 апреля 2019

Проход топора не нужен.Замена plt.clf () на ax1.clear () решила проблему.

...