[英]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')
輸出:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.