[英]Python plot misaligned labels and colors in legend
我有一個 dataframe 有許多列和數據,如下所示:
rse_df
Vstart=29V Vend=37V ... Vstart=36V Vend=37V
0 4.174279 1.0 ... 0.517509 1.0
1 4.032258 1.5 ... NaN NaN
2 3.509288 2.0 ... NaN NaN
3 3.091149 2.5 ... NaN NaN
4 2.746441 3.0 ... NaN NaN
5 2.439879 3.5 ... NaN NaN
6 2.305721 4.0 ... NaN NaN
7 2.057234 4.5 ... NaN NaN
8 1.826651 5.0 ... NaN NaN
9 1.634388 5.5 ... NaN NaN
10 1.479945 6.0 ... NaN NaN
11 1.347369 6.5 ... NaN NaN
12 1.238585 7.0 ... NaN NaN
13 1.106522 7.5 ... NaN NaN
14 0.990119 8.0 ... NaN NaN
我已經繪制,結果如下:
在情節傳奇中,所有內容都被錯誤地表示。 如果您在 plot-legend 中觀察到第一個 label 'Vstart=29V',則表示錯誤。 從 dataframe 開始,“Vstart=29V”列數據以粉色顯示在頂行,但圖例顯示藍色,這是錯誤的。 看來這里出了點問題。
我的代碼是:
plt.plot(rse_df[rse_df.columns[1::2].values],rse_df[rse_df.columns[0::2].values],'-o',markerfacecolor='none')
plt.legend(rse_df.columns[0::2].values.tolist(),fontsize=8,ncol=1)
上面的代碼有什么問題導致這個錯誤的 alignment?
方法1:
sns.lineplot(x=rse_df[rse_df.columns[1::2].values],y=rse_df[rse_df.columns[0::2].values], markers=True)
plt.show()
Output:
raise ValueError('If using all scalar values, you must pass'
ValueError: If using all scalar values, you must pass an index
seaborn
:seaborn.lineplot
有許多參數來自定義提供給 function 的數據,包括x
和y
參數。import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
print(df)
Vstart=29V Vstart=30V
4.174279 2.726868
4.032258 2.420029
3.509288 2.158159
3.091149 1.916360
2.746441 1.816749
2.439879 1.618786
2.305721 1.462994
2.057234 1.328884
1.826651 1.212548
1.634388 1.112656
1.479945 1.027790
1.347369 0.921890
1.238585 0.846886
1.106522 NaN
0.990119 NaN
sns.lineplot(data=df, markers=True)
plt.show()
[1::2]
與[0::2]
)Vstart=30V
與Vstart=29V
plt.plot(df[df.columns[1::2].values], df[df.columns[0::2].values], '-o', markerfacecolor='none')
plt.legend(df.columns[0::2].values.tolist(),fontsize=8,ncol=1)
seaborn
sns.lineplot(x='Vstart=30V', y='Vstart=29V', data=df)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.