seaborn tsplot只显示一行

时间:2018-03-30 23:07:27

标签: time-series seaborn

我正在尝试使用seaborn对以下数据进行时间序列绘图:

      infant   shannon   DOL  subject
0     N1_003  0.262301  11.0        0
1     N1_003  0.715419  13.0        0
1161  S2_018  1.085983  22.0        0
1162  S2_018  1.126659  23.0        0

但由于某种原因,婴儿S2_018的线路只显示使用以下代码?

def plot_ts(db):
    db=db[['infant', 'shannon', 'DOL']]
    db=db.drop_duplicates()
    db=db.dropna()
    db['subject'] = 0

    sns.tsplot(time='DOL', # Horizontal axis
           value='shannon', # Vertical axis
           data=db, # Data source
           unit='subject',
           condition="infant",
           interpolate=True,
           legend=True)

enter image description here

1 个答案:

答案 0 :(得分:0)

x轴上的绘图范围从22到23,然而N1_003的数据是11和13.所以你只需要获得正确的绘图限制。为此,只需添加

plt.autoscale()

在你的功能结束时。

enter image description here

但请注意,tsplot并不是绘制问题中数据框等简单事物的首选。此外,从seaborn的版本0.8开始,tsplot is deprecated

请参阅here了解它何时有用。

这里只考虑一个正常的熊猫图,

for n, infant in db.groupby("infant"):
    infant.plot(x="DOL", y="shannon", ax=plt.gca(), label=n);