簡體   English   中英

圖例中的 Python plot 標簽和 colors 未對齊

[英]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 的數據,包括xy參數。
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()

在此處輸入圖像描述

你的代碼:

  • 您未對齊 plot 列和圖例列(例如[1::2][0::2]
  • 此外,此代碼與問題中的 plot 不匹配
    • 此代碼繪制Vstart=30VVstart=29V
  • 問題中顯示的 plot 將所有數據繪制在 y 軸上,索引為 x 軸。
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)

Plot 使用問題中提供的代碼生成:

在此處輸入圖像描述

此 plot 與seaborn

sns.lineplot(x='Vstart=30V', y='Vstart=29V', data=df)

暫無
暫無

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

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