Seaborn tsplot 不显示数据

Seaborn tsplot not showing data

我正在尝试使用 seaborn 制作一个简单的 tsplot,但由于我不清楚的原因,当我 运行 代码时没有任何显示。这是一个最小的例子:

import numpy as np
import seaborn as sns
import pandas as pd

df = pd.DataFrame({'value': np.random.rand(31), 'time': range(31)})

ax = sns.tsplot(data=df, value='value', time='time')
sns.plt.show()

通常 tsplot 为每个时间点提供多个数据点,但是如果只提供一个就不行吗?

我知道可以使用 matplotlib 非常轻松地完成此操作,但我想使用 seaborn 来实现它的一些其他功能。

您可以对 time 列中的 index 使用 set_index,然后绘制 Series:

df = pd.DataFrame({'value': np.random.rand(31), 'time': range(31)})
df = df.set_index('time')['value']
ax = sns.tsplot(data=df)
sns.plt.show()

您缺少个人 unit。使用数据框时,想法是记录了相同 unit 的多个时间序列,这些时间序列可以在数据框中作为单独的标识符。然后根据不同的units.

计算误差

所以对于一个系列来说,你可以像这样让它再次工作:

df = pd.DataFrame({'value': np.random.rand(31), 'time': range(31)})
df['subject'] = 0
sns.tsplot(data=df, value='value', time='time', unit='subject')

只是为了了解错误是如何计算的,请看这个例子:

dfs = []
for i in range(10):
    df = pd.DataFrame({'value': np.random.rand(31), 'time': range(31)})
    df['subject'] = i
    dfs.append(df)
all_dfs = pd.concat(dfs)
sns.tsplot(data=all_dfs, value='value', time='time', unit='subject')