我有一个pandas.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))
我尝试搜索一些解决方案,但找不到。我找到的最接近的链接是此链接Dynamically updating plot in matplotlib。那里接受的答案显示了一种更新单个图形的方法。顺便说一句,我发现必须在该答案的plt.pause(0.1)
之后加上plt.draw()
才能真正显示该数字。
能否请您告诉我如何实现我的身材?谢谢。