[英]Matplotlib fill_between
我正在嘗試將fill_between
與pandas Series值一起使用,但是它不起作用。 'DAY'
字段是字符串日期格式,例如'%Y-%m-%d'
。
df_tmp
像:
MEDIA_B2W MEDIA_CONC UPPER_BOUND LOWER_BOUND DAY
2017.48 2512.55 2811.0 1924.0 2017-01-01
1999.38 2512.55 2811.0 1924.0 2017-01-02
1930.89 2512.55 2811.0 1924.0 2017-01-03
df_tmp[['UPPER_BOUND','LOWER_BOUND','MEDIA_CONC','MEDIA_B2W','DAY']].plot(
x='DAY',ax=ax[0],grid=True,style=['r-','b-','y--','g-o'])
ax[0].fill_between(df_tmp.index,df_tmp['UPPER_BOUND'], df_tmp['LOWER_BOUND'],
facecolor='green', alpha=0.2, interpolate=True)
我想在上下限之間進行着色。 這是當前情節
僅線條出現在繪圖中。
此解決方法將df
索引用於x刻度,然后將其交換為時間序列。
df = df[['UPPER_BOUND','LOWER_BOUND','MEDIA_CONC','MEDIA_B2W','DAY']]
ax = df.plot(x=df.index, grid=True, style=['r-','b-','y--','g-o'])
ax.fill_between(df.index, df.LOWER_BOUND, df.UPPER_BOUND,
facecolor='green', alpha=0.2, interpolate=True)
# replace index values with dates
ax.set_xticks(df.index)
ax.set_xticklabels(df.DAY)
# cosmetic adjustments
pad = 700
ax.set_ylim([df.LOWER_BOUND.min()-pad, df.UPPER_BOUND.max()+pad])
或者,您可以將DAY
設置為df.index
:
df.DAY = pd.to_datetime(df.DAY)
df = df.set_index('DAY')
ax = df.plot(grid=True, style=['r-','b-','y--','g-o'])
ax.fill_between(df.index, df.LOWER_BOUND, df.UPPER_BOUND,
facecolor='green', alpha=0.2, interpolate=True)
# cosmetic adjustments
pad = 700
_=ax.set_ylim([df.LOWER_BOUND.min()-pad, df.UPPER_BOUND.max()+pad])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.