[英]Plotting multiple lines from single dataframe column
我試圖使用matplotlib從gps數據集繪制時空圖。 目前我有一個龐大的數據幀字典。 我的詞典中的每個數據框都是針對單個車輛的。
經過大量過濾后,我目前每輛車都需要兩列,其中“時間”列為日期時間(已格式化並可繪制),“距離”列為float64類型。
我當前的繪圖數據看起來像一個數據幀:
Time Distance
06:00 0
06:01 0,2
. . .
. . .
. . .
06:45 15
06:46 0
06:47 0,1
. . .
. . .
. . .
07:15 15
07:16 0
正如您所看到的,我的距離列在0-15之間變化。 我想要做的是我希望每個0-15數據在時空圖中用不同的線表示。
我想要繪制的是類似的東西;
! https://cramster-image.s3.amazonaws.com/definitions/CL-3347V2.png
如何使用不同的線條為每個0-15部分繪制我的距離列?
謝謝您的幫助
一種方法是創建一個新列,使用唯一標簽標記每個連續非遞減值的運行,然后將這些標簽unstack
為列。 每個DataFrame列都繪制為單獨的數據系列。
# Example data, a bit different from yours
df = pd.DataFrame({'Distance': [0.0, 0.2, 0.4, 0.6, 14.0, 15.0,
0.0, 0.1, 14.0, 15.0,
0.0, 0.3],
'Time': ['06:00', '06:01', '06:02', '06:03', '06:44', '06:45',
'06:46', '06:47', '07:14', '07:15',
'07:16', '07:17']})
# Convert time strings to datetime if needed
df['Time'] = pd.to_datetime(df['Time'])
# Add column that labels each run of non-decreasing values
df['Vehicle'] = df['Distance'].diff().lt(0).cumsum()
df
Time Distance Vehicle
0 2019-03-29 06:00:00 0.0 0
1 2019-03-29 06:01:00 0.2 0
2 2019-03-29 06:02:00 0.4 0
3 2019-03-29 06:03:00 0.6 0
4 2019-03-29 06:44:00 14.0 0
5 2019-03-29 06:45:00 15.0 0
6 2019-03-29 06:46:00 0.0 1
7 2019-03-29 06:47:00 0.1 1
8 2019-03-29 07:14:00 14.0 1
9 2019-03-29 07:15:00 15.0 1
10 2019-03-29 07:16:00 0.0 2
11 2019-03-29 07:17:00 0.3 2
# Reshape to one column per vehicle
df.set_index(['Time', 'Vehicle'])['Distance'].unstack()
Vehicle 0 1 2
Time
2019-03-29 06:00:00 0.0 NaN NaN
2019-03-29 06:01:00 0.2 NaN NaN
2019-03-29 06:02:00 0.4 NaN NaN
2019-03-29 06:03:00 0.6 NaN NaN
2019-03-29 06:44:00 14.0 NaN NaN
2019-03-29 06:45:00 15.0 NaN NaN
2019-03-29 06:46:00 NaN 0.0 NaN
2019-03-29 06:47:00 NaN 0.1 NaN
2019-03-29 07:14:00 NaN 14.0 NaN
2019-03-29 07:15:00 NaN 15.0 NaN
2019-03-29 07:16:00 NaN NaN 0.0
2019-03-29 07:17:00 NaN NaN 0.3
# plot
df.set_index(['Time', 'Vehicle'])['Distance'].unstack().plot(marker='.')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.