Как изобразить динамически обновляемые фигуры, используя два сюжета: Matplotlib, Python 3? - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть панды. DataFrame df,

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

f = [0, 10, 20, 30]
col1 = [1+1j, 2-2j, 3+3j, 4-4j]
col2 = [5+0j, 0+6j, 1-2j, 2-1j]
col1 = np.array(col1, dtype=complex)
col2 = np.array(col2, dtype=complex)
df = pd.DataFrame({'f': f, 'col1': col1, 'col2': col2}).set_index('f')

Я хочу построить их в стиле подплота:

  • Верхний подпункт предназначен для абсолютного значения'col1' и 'col2'
  • Нижний подплот предназначен для фазового угла 'col1' и 'col2'
  • Два субплота имеют одну и ту же ось x.

На каждом участке есть две строки: одна для 'col1', а другая для 'col2'.У меня не все df сразу, а по одной строке за раз.

for iter in range(4):
    df_one_row = df.iloc[iter]  # this line is made just to mimic my real application where I receive the data row by row.
    x = df.index[iter]
    y1 = df_one_row['col1']
    y2 = df_one_row['col2']

    # update the top subplot for absolute values of two lines
    update_top_subplot(x, np.abs(y1), np.abs(y2))
    # update the bottom subplot for phase angle values of two lines.
    update_bottom_subplot(x, np.angle(y1), np.angle(y2))

Я пытался найти некоторые решения, но не смог найти одно.Самая близкая из найденных мной - это ссылка Динамически обновляемый сюжет в matplotlib .Принятый ответ показывает способ обновления одной фигурыКстати, я обнаружил, что нужно добавить plt.pause(0.1) после plt.draw() в этом ответе, чтобы фактически показать цифру.

Не могли бы вы показать мне, как реализовать мою фигуру?Спасибо.

...