Python在图例中绘制未对齐的标签和颜色

2024-09-29 00:22:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含许多列和数据的数据框,如下所示:

rse\U数据框

           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

我画了图,结果如下:

enter image description here

在情节传说中,所有的情节都被错误地表现出来。如果观察到绘图图例中的第一个标签“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)

上面的代码中有什么错误导致了这种错误对齐?你知道吗

方法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()

输出:

raise ValueError('If using all scalar values, you must pass'

ValueError: If using all scalar values, you must pass an index

Tags: columns数据代码dfif错误pltnan
1条回答
网友
1楼 · 发布于 2024-09-29 00:22:19

使用^{}

  • ^{}有许多参数来定制给函数的数据,包括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()

enter image description here

您的代码:

  • 绘图列和图例列未对齐(例如[1::2][0::2]
  • 而且,这个代码与问题中的情节不匹配
    • 此代码绘制Vstart=30VVstart=29V
  • 问题中显示的图,将所有数据绘制在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)

用问题中提供的代码生成的绘图:

enter image description here

此绘图与seaborn

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

相关问题 更多 >