首页 > 解决方案 > 如何在 pandas/matplotlib 时间序列图中的线条之间填充

问题描述

我有一个数据框,它由 Pandas 中的 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 行,但似乎什么都没有填满(因此没有将室内和室外两类分开)。

有任何想法吗?提前致谢。

标签: pythonpandasmatplotlib

解决方案


您向fill_between传递了错误的参数。

合适的参数如下:

  • x - x 坐标,在你的情况下是索引值,
  • y1 - 第一条曲线的 y 坐标,
  • y2 - 第二条曲线的 y 坐标。

为了可读性,通常还需要传递颜色参数。

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

car_df[['inside', 'outside']].plot()
plt.fill_between(car_df.index, car_df.inside, car_df.outside,
    color=(0.8, 0.9, 0.5));

并得到以下图片:

在此处输入图像描述


推荐阅读