簡體   English   中英

從數據框中繪制多條線

[英]Plot multiple lines from dataframe

我有下表:

時間 類型 用量1 [%] 用量2 [%]
2021-07-09 09:00 夏令時 LG1 60.0581 87.4926
2021-07-09 09:00 夏令時 LG2 42.1409 40.57
2021-07-09 09:00 夏令時 LG3 63.433 49.9326
2021-07-09 10:00 夏令時 LG1 53.6577 86.6658
2021-07-09 10:00 夏令時 LG2 36.384 41.7439
2021-07-09 10:00 夏令時 LG3 54.5699 54.0306
2021-07-10 09:00 夏令時 LG1 35.2818 75.8487
2021-07-10 09:00 夏令時 LG2 34.101 37.7934
2021-07-10 09:00 夏令時 LG3 50.4009 46.8263
2021-07-10 10:00 夏令時 LG1 39.3575 78.3179
2021-07-10 10:00 夏令時 LG2 50.3955 43.3913
2021-07-10 10:00 夏令時 LG3 52.2898 51.8793
2021-07-11 09:00 夏令時 LG1 36.8559 71.9565
2021-07-11 09:00 夏令時 LG2 31.1939 35.8108
2021-07-11 09:00 夏令時 LG3 44.6744 49.5196
2021-07-11 10:00 夏令時 LG1 43.9611 74.5974
2021-07-11 10:00 夏令時 LG2 39.075 36.9884
2021-07-11 10:00 夏令時 LG3 41.0939 45.0962

我希望 x 軸是時間,然后在圖中為每個類型的 Usage1 和 Usage2 繪制一條線。 所以總的來說,因為有3種不同的類型,所以總共應該有6行。 到目前為止,我已經嘗試了以下代碼,但它為每個用法繪制了一行:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.read_excel (r'plot.xlsx')

plt.plot( 'Time', 'Usage1 [%]', data=df, marker='o', linewidth=2, label='Type')
plt.plot( 'Time', 'Usage2 [%]', data=df, marker='o', linewidth=2, label='Type')
plt.legend(loc='best')

您需要使用pandas.melt將數據重塑為如下所示

                    Time  Type    variable    value
0  2021-07-09 09:00 DST   LG1   Usage1 [%]  60.0581
1  2021-07-09 09:00 DST   LG2   Usage1 [%]  42.1409
2  2021-07-09 09:00 DST   LG3   Usage1 [%]  63.4330
3  2021-07-09 10:00 DST   LG1   Usage1 [%]  53.6577
4  2021-07-09 10:00 DST   LG2   Usage1 [%]  36.3840

然后你可以使用seaborn.lineplot

import seaborn as sns
df['Time'] = pd.to_datetime(df['Time'])
sns.lineplot(data=df.melt(id_vars=['Time', 'Type']), x='Time', hue='Type', style='variable', y='value')

輸出:

seaborn 線圖

注意。 為確保一致的時間處理,最好為您的時間列使用日期時間格式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM