尝试将误差线添加到熊猫线条图中,似乎会否定先前作为参数提供的信息。特别是,似乎忽略了不包含行的选择。我想做的是创建一个没有任何线条的线图,但包括误差线。请参阅下面的MWE:
import pandas as pd
import numpy as np
from datetime import datetime as dt
dates = np.array([dt(2012, 9, 27, 8, 52, 21),
dt(2012, 10, 6, 5, 4, 15),
dt(2012, 10, 7, 4, 53, 4),
dt(2012, 10, 9, 7, 21, 18),
dt(2012, 10, 10, 5, 4, 8),
dt(2012, 10, 11, 4, 58, 43),
dt(2012, 10, 12, 11, 15, 25),
dt(2012, 10, 13, 10, 45, 23),
dt(2012, 10, 20, 6, 0, 25),
dt(2012, 10, 22, 7, 41, 38)])
values = np.array([5.61006523, 5.39632183, 5.49317193, 5.42327983, 5.4623386,
5.42444747, 5.60362929, 5.57041331, 5.34893575, 5.48222005])
date_bins = np.array([dt(2012, 9, 29, 14),
dt(2012, 10, 10, 14),
dt(2012, 10, 14, 14),
dt(2012, 10, 23, 14)])
df1 = pd.DataFrame({'date':dates, 'value': values})
df2 = pd.DataFrame({'bin_dates':date_bins})
lookup = df1.groupby(pd.cut(df1['date'], df2['bin_dates'])).agg({'value':['mean','std']})
lookup.columns = ['mean_val','std_val']
lookup[['mean_val']].plot(kind='line',style='o',yerr=lookup[['std_val']].values.T)
有人知道解决方法吗?我遇到的最接近的是一种解决方法,可以将行保持在here位置。此外,它没有得到解答here。有任何想法吗?
答案 0 :(得分:1)
在不求助于matplotlib
的情况下,我想到的解决方法是使用从ax
返回的轴实例df.plot()
删除线对象。
ax = lookup[['mean_val']].plot(kind='line', style='o', yerr=lookup[['std_val']].values.T)
ax.lines[0].remove()
答案 1 :(得分:0)
在Sheldore的answer的基础上,我们可以通过循环显示颜色并重新绘制数据而没有错误栏来将数据点重新添加到顶部。
ax = lookup[['mean_val']].plot(kind='line',style='o',yerr=lookup[['std_val']].values.T,legend=False)
ax.lines[0].remove()
ax.set_prop_cycle(None)
lookup[['mean_val']].plot(kind='line',style='o',ax=ax)