如何在pandas / matplotlib时间序列图中的线之间填充

时间:2019-10-27 17:56:49

标签: python pandas matplotlib

我有一个数据帧,该数据帧由DataTime在熊猫中索引。

我有关于车内温度,最低车内温度,最高温度以及车外温度相同的三个特征的数据。

因此,我绘制了诸如时间序列之类的所有6个特征,并试图像这样使用plt.fill_between:

car_df[['insideTemp','insideTempLow','insideTempHigh','outsideTemp','outsideTempLow','outsideTempHigh']].plot()
plt.fill_between(car_df['insideTemp'], car_df['insideTempLow'],car_df['insideTempHigh'], data=car_df)
plt.fill_between(car_df['outsideTemp'], car_df['outsideTempLow'],car_df['outsideTempHigh'], data=car_df)
plt.show()

我可以根据需要获得6条线,但是似乎什么也没有填满(因此不能将室内和室外这两类分开)。

有什么想法吗?提前致谢。

1 个答案:

答案 0 :(得分:0)

您将错误的参数传递给 fill_between

正确的参数如下:

  • x -x坐标,在您的情况下为 index 值,
  • y1 -第一条曲线的y坐标,
  • y2 -秒曲线的y坐标。

为了便于阅读,通常还需要传递 color 参数。

我进行了这样的测试,只画了2条线(缩短了列名) 并填充它们之间的空间:

d3.csv("datafile.csv", r => {
    // this function returns a new object for each row.
    // the + is common shorthand for parseFloat()

    return {
        xvalue: +r.xvalue,
        yvalue: +r.yvalue
    };
}, data => {
    let xMx = d3.max(data, d => d.xvalue);
    let yMx = d3.max(data, d => d.yvalue);
    console.log(xMx, yMx);
});

并获得了以下图片:

enter image description here