数据框的条件matplotlib fill_between

时间:2018-07-06 09:21:54

标签: pandas matplotlib

这似乎很容易,但是我很挣扎。 我想有条件地在轴之间着色,即让区域填充为绿色或红色并完全填充。我使用一些布尔df列来确定颜色

df = pd.DataFrame([1,1,1,1,1,0,0,1,1,0,1,1,0,1,0,1], columns=['grow'])
df['green']=(df.grow>0) | (df.grow.shift(1)>0)
df['red']= (df.grow<=0) | (df.grow.shift(1)<=0) 

但是当我使用此条件填充此内容时:

fig, axes = plt.subplots(nrows=1, ncols=1)
axes.fill_between(df.index, 0, 1,  
                 where=(df.grow>0) , color = 'green', alpha = 0.1)
axes.fill_between(df.index, 0, 1,  
                 where=(df.grow<=0) , color = 'red', alpha = 0.1)

它们没有完全装满。我该如何改变在哪里可以充饱的极限? enter image description here

1 个答案:

答案 0 :(得分:1)

当您将const getImageDimensionsEpic = action$ => action$.ofType('UPLOAD_IMAGE_SUCCESS').pipe( mergeMap(payload => { let img = new Image(); img.src = payload.image_url; img.onload = function() { return Observable.of({ type: 'GET_IMAGE_DIMENSIONS', img: img.width }); }; }) ); 本身绘制为线图时,填充区域不连续的原因变得显而易见。在使用pd.grow的方式中,您隐式地假设您的数据类似于阶跃函数,但实际上它实际上更像是锯齿(边缘不是“尖锐的”)。解决此问题的一种方法是用更多重复的值填充函数,从而使0和1之间的过渡更加清晰。 fill_between()是用于此类操作的实用工具。这里是一个如何做的例子:

numpy

...结果如下:

result of the above code

希望这会有所帮助。