我正在尝试在matplotlib中的堆叠条形图上绘制线形图,但无法同时显示它们。

我已经通过从其他数据框中提取各种信息并使用datetime索引来设置组合数据框。我正在尝试在一组轴(LightlyActive, FairlyActive, VeryActive)上从活动列(wake, light, deep, rem)绘制堆积的条形图,并从每个睡眠周期(ax1)的分钟绘制几条线形图。然后,我试图将efficiency列绘制为在单独的一组轴(ax2)上的线图。

我无法同时显示堆叠的条形图和折线图。如果我第二次绘制条形图,那是唯一显示的条形图。如果我首先绘制线图(活动性和效率),则这些是唯一显示的线形图。似乎无论我绘制第二种情节的哪种风格都掩盖了第一个情节。

            LightlyActive  FairlyActive  VeryActive  efficiency  wake  light   deep    rem
dateTime
2018-04-10            314            34         123        93.0  55.0  225.0   72.0   99.0
2018-04-11            253            22         102        96.0  44.0  260.0   50.0   72.0
2018-04-12            282            26          85        93.0  47.0  230.0   60.0   97.0
2018-04-13            292            35          29        96.0  43.0  205.0   81.0   85.0

fig, ax1 = plt.subplots(figsize = (10, 10))
temp_df[['LightlyActive', 'FairlyActive', 'VeryActive']].plot(kind = 'bar', stacked = True, ax = ax1)
ax2 = plt.twinx(ax = ax1)
temp_df[['wake', 'light', 'deep', 'rem']].plot(ax = ax1)
temp_df['efficiency'].plot(ax = ax2)
plt.show()


我想在一个活动图上堆积活动水平(“ LightlyActive”,“ FairlyActive”,“ VeryActive”)和睡眠周期(“唤醒”,“轻度”,“深度”,“ rem”)的堆叠条形图一组轴,第二组轴上的睡眠效率。

编辑

我什至没有像下面的编辑版本中的特伦顿那样显示它(称为“特伦顿M编辑”)。在此下方的2个图是为我显示的版本。

python - 从数据框在Python/matplotlib中的条形图上绘制线图-LMLPHP

python - 从数据框在Python/matplotlib中的条形图上绘制线图-LMLPHP

这是到目前为止我得到的(由Trenton M编辑):


注意圆圈区域。


python - 从数据框在Python/matplotlib中的条形图上绘制线图-LMLPHP

最佳答案

弄清楚了!通过将日期保留为一列(即不将其设置为索引),我可以绘制线条图和条形图。然后,我可以返回并相应地调整标签。

@ScottBoston,您的x轴提示了我。感谢您查看这个。

date1 = pd.datetime(2018, 4, 10)
data = {'LightlyActive': [314, 253, 282, 292],
    'FairlyActive': [34, 22, 26, 35],
    'VeryActive': [123, 102, 85, 29],
    'efficiency': [93.0, 96.0, 93.0, 96.0],
    'wake': [55.0, 44.0, 47.0, 43.0],
    'light': [225.0, 260.0, 230.0, 205.0],
    'deep': [72.0, 50.0, 60.0, 81.0],
    'rem': [99.0, 72.0, 97.0, 85.0],
    'date': [date1 + pd.Timedelta(days = i) for i in range(4)]}
temp_df = pd.DataFrame(data)

fig, ax1 = plt.subplots(figsize = (10, 10))
ax2 = plt.twinx(ax = ax1)
temp_df[['LightlyActive', 'FairlyActive', 'VeryActive']].\
         plot(kind = 'bar', stacked = True, ax = ax1)
temp_df[['wake', 'light', 'deep', 'rem']].plot(ax = ax1, alpha = 0.5)
temp_df['efficiency'].plot(ax = ax2)
ax1.set_xticklabels(labels = temp_df['date'])
plt.show()


python - 从数据框在Python/matplotlib中的条形图上绘制线图-LMLPHP

关于python - 从数据框在Python/matplotlib中的条形图上绘制线图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57997956/

10-12 22:16