Python 我怎样才能填充这个图中的区域?

Python 我怎样才能填充这个图中的区域?,python,matplotlib,Python,Matplotlib,我想在下面的图中填写蓝色的“位置”部分。数据本身标志着重大位置变化的发生,是15分钟样本的时间序列,并重复上一个位置,直到发生新的位置变化事件。例如,一旦注册了“home”,它的列就保持为1,其他所有列都保持为0。接下来访问“工作”时,该列变为1,home在0处加入其他列 我注意到fillstyle='full'没有做任何事情。填充图形区域的正确方法是什么 样本数据 我认为不可能直接从数据帧使用pandas绘图,但可以从matplotlib使用。您需要在数据帧的每一列上执行此操作(“条”、“家

我想在下面的图中填写蓝色的“位置”部分。数据本身标志着重大位置变化的发生,是15分钟样本的时间序列,并重复上一个位置,直到发生新的位置变化事件。例如,一旦注册了“home”,它的列就保持为1,其他所有列都保持为0。接下来访问“工作”时,该列变为1,home在0处加入其他列

我注意到fillstyle='full'没有做任何事情。填充图形区域的正确方法是什么

样本数据
我认为不可能直接从数据帧使用pandas绘图,但可以从matplotlib使用。您需要在数据帧的每一列上执行此操作(“条”、“家”、“工作”等)。可以手动创建轴,并告诉matplotlib和pandas打印到该轴上

import matplotlib.pyplot as plt
fig, ax = plt.subplots(1,1)
for location in [' bar', 'grocers', ' home']:  # or whatever subset of columns you want
    ax.fill_between(range(len(u1[location]), u1[location], step='post')

u1[' app_3'].plot(ax=ax, color='orange')
# etc..
另外,
fillstyle
参数用于为每个数据点设置标记,并希望修改其外观时:


编辑:使用您提供的数据更新示例。我修改了数据,在工作和家庭之间的吧台上加了一个停车点,以得到一个更好看的曲线图

import matplotlib.pyplot as plt
import pandas as pd

columns = ['date', 'app_1', 'app_2', 'user', 'bar', 'grocers', 'home', 'lunch', 'park', 'relatives', 'work']
data = [['2017-08-29 14:00:00', 0.013953, 0.052472, 'user_1', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], ['2017-08-29 14:15:00', 0.014070, 0.052809, 'user_1', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], ['2017-08-29 14:30:00', 0.014186, 0.053146, 'user_1', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], ['2017-08-29 14:45:00', 0.014302, 0.053483, 'user_1', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], ['2017-08-29 15:00:00', 0.014419, 0.053820, 'user_1', 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0]]

df = pd.DataFrame(data, columns=columns)
height = df[['app_1', 'app_2']].max().max()

fig, ax = plt.subplots(1,1)

df['app_1'].plot(ax=ax, color='orange')
df['app_2'].plot(ax=ax, color='purple')
ax.fill_between(range(len(df['home'])), height * df['home'], step='post', color='blue')
ax.fill_between(range(len(df['work'])), height * df['work'], step='post', color='red')

plt.show()
数据如下所示:

                  date     app_1     app_2    user  bar  grocers  home  lunch  park  relatives  work
0  2017-08-29 14:00:00  0.013953  0.052472  user_1  0.0      0.0   0.0    0.0   0.0        0.0   1.0
1  2017-08-29 14:15:00  0.014070  0.052809  user_1  0.0      0.0   0.0    0.0   0.0        0.0   1.0
2  2017-08-29 14:30:00  0.014186  0.053146  user_1  1.0      0.0   0.0    0.0   0.0        0.0   0.0
3  2017-08-29 14:45:00  0.014302  0.053483  user_1  0.0      0.0   1.0    0.0   0.0        0.0   0.0
4  2017-08-29 15:00:00  0.014419  0.053820  user_1  0.0      0.0   1.0    0.0   0.0        0.0   0.0
看起来像这样:

                  date     app_1     app_2    user  bar  grocers  home  lunch  park  relatives  work
0  2017-08-29 14:00:00  0.013953  0.052472  user_1  0.0      0.0   0.0    0.0   0.0        0.0   1.0
1  2017-08-29 14:15:00  0.014070  0.052809  user_1  0.0      0.0   0.0    0.0   0.0        0.0   1.0
2  2017-08-29 14:30:00  0.014186  0.053146  user_1  1.0      0.0   0.0    0.0   0.0        0.0   0.0
3  2017-08-29 14:45:00  0.014302  0.053483  user_1  0.0      0.0   1.0    0.0   0.0        0.0   0.0
4  2017-08-29 15:00:00  0.014419  0.053820  user_1  0.0      0.0   1.0    0.0   0.0        0.0   0.0

否决票应该附有评论而不是否决票,但是,请告诉我们否决票的评论规定在哪里?它实际上会告诉你何时否决票,如果你还没有向我添加评论,它不会告诉你。不管有很多关于meta的帖子在讨论这一点,普遍的共识是不需要评论。公平地说。不,我看不出你的问题有什么特别的问题。您好Mskoh52--我尝试了
ax.fill_-between(len(u1[location]),u1[location])
--它实际上没有填充任何空格(而且渲染时间明显更长)。它还分为两个图形,一个带有应用程序行,另一个带有位置数据。你能给我更清楚的解释吗?我将添加一些示例数据来查看抱歉,这意味着写入范围(len(u1[location]),它设置要填充的x位置。如果您的数据位于不同的x位置,您需要更改该位置。修复了一些问题,并用您的示例数据制作了一个演示。哇,谢谢!这是实际数据的一部分,太棒了
                  date     app_1     app_2    user  bar  grocers  home  lunch  park  relatives  work
0  2017-08-29 14:00:00  0.013953  0.052472  user_1  0.0      0.0   0.0    0.0   0.0        0.0   1.0
1  2017-08-29 14:15:00  0.014070  0.052809  user_1  0.0      0.0   0.0    0.0   0.0        0.0   1.0
2  2017-08-29 14:30:00  0.014186  0.053146  user_1  1.0      0.0   0.0    0.0   0.0        0.0   0.0
3  2017-08-29 14:45:00  0.014302  0.053483  user_1  0.0      0.0   1.0    0.0   0.0        0.0   0.0
4  2017-08-29 15:00:00  0.014419  0.053820  user_1  0.0      0.0   1.0    0.0   0.0        0.0   0.0