我想考虑时间序列数据,确切地说加速度计的三个轴。我正在挖掘文档,但我没有立即看到如何提供多个信号,并试图弄清楚如何组织我的数据为大熊猫和seaborn一般。在绘制了三个信号的单次运行之后,我希望覆盖这些相同信号的多次运行以得到这样的情节但是对于三个信号:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
data = [['t', 'x', 'y', 'z'],
['0', '1.024', '0.9980', '1.001'],
['1', '1.0-4', '0.9080', '1.021'],
...]
sns.set(color_codes=True)
df = pd.DataFrame(data, columns=['t', 'x', 'y', 'z'])
sns.tsplot(time='t', y=['x', 'y', 'z'], data=df).savefig("testing.png")
ValueError: setting an array element with a sequence.
pandas DataFrame docs tsplot docs
有没有办法合并这些单独的情节?
答案 0 :(得分:3)
这似乎有效:
readlines()
在indices = [x[0] * 4 + 2 for x in enumerate(lines)]
filtered_lines = [lines[i] for i in indices if len(lines) > i]
N=100
num_runs = 3
out = []
for k in range(num_runs):
data = np.random.rand(N,3) + np.sin(np.arange(N)/5)[:,np.newaxis]
data = np.hstack([np.arange(N)[:,np.newaxis],data])
data = np.hstack([np.zeros(N)[:,np.newaxis]+k,data])
out.append(data)
data = np.vstack(out)
df = pd.DataFrame(data, columns=['sub','t', 'x', 'y', 'z'])
dfm = pd.melt(df, id_vars=['t','sub'], value_vars=['x', 'y', 'z'])
dfm
sns.tsplot(time='t',
value='value',
condition='variable',
data=dfm,
err_style="boot_traces",
unit='sub',
n_boot=50)
夫妻评论:
tsplot希望使用标签列解除轨迹。 pd.melt
为您做到这一点。
tsplot也期待多次"试验"对于给定的变量,因此我用来制作示例数据帧的循环。即使您只有一个跟踪,您也需要有一个 t sub variable value
0 0 0 x 0.952150
1 1 0 x 0.343075
2 2 0 x 0.630453
3 3 0 x 0.998851
4 4 0 x 1.237932
5 5 0 x 0.958720
列,您可以将其传递给tsplot。没有它,我无法让它发挥作用。