在pandas中绘制数据帧轴后获取图例标签

2024-05-19 22:47:07 发布

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

我试图让我的绘图显示一个图例,其中每个值来自的列都有一个标签。我没有将plt.plot()与pivot步骤分开,但我想知道是否仍然可能有一个图例。一个根本没有出现,如果我加上

plt.plot(df_EPErrorPercentByWeekAndDC.pivot(index='hellofresh delivery week', columns='DC', values='Error Percent'), label='DC')

它只是将该字符串用作每个标签,如果我添加df_EPErrorPercentByWeekAndDC['DC'],那么它只会在每个图例项中显示它的一个字母。以下是我的代码:

print("### Graphing Error Rates by Week and DC EP ###")
# remove percent sign from percent in place
df_EPErrorPercentByWeekAndDC['Error Percent'] = df_EPErrorPercentByWeekAndDC['Error Percent'].str[:-1].astype(float)
plt.xticks(rotation = 90)
plt.plot(df_EPErrorPercentByWeekAndDC.pivot(index='hellofresh delivery week', columns='DC', values='Error Percent'))
plt.legend()
plt.savefig('EPErrorPercentByWeekAndDC.png', bbox_inches="tight", dpi=500)
plt.close()

我不能共享任何数据,但它是一个数据透视表的格式,其中列具有状态名称,每列都充满了百分比,图表工作正常,但图例不存在


Tags: columnsdfindexplotplterror标签dc
1条回答
网友
1楼 · 发布于 2024-05-19 22:47:07

保存旋转框架,然后将图例指定为列:

df['Error Percent'] = df['Error Percent'].str[:-1].astype(float)
plt.xticks(rotation=90)
pivoted_df = df.pivot(index='hellofresh delivery week', columns='DC',
                      values='Error Percent')
plt.plot(pivoted_df)
plt.legend(pivoted_df.columns, title=pivoted_df.columns.name)
plt.tight_layout()
plt.show()

plot 1

或者直接在数据透视框上使用^{},该数据透视框将自动处理图例:

df['Error Percent'] = df['Error Percent'].str[:-1].astype(float)
pivoted_df = df.pivot(index='hellofresh delivery week', columns='DC',
                      values='Error Percent')
ax = pivoted_df.plot(rot=90)
plt.tight_layout()
plt.show()

plot 2


使用的数据帧和导入示例:

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

np.random.seed(5)
df = pd.DataFrame({
    'hellofresh delivery week': np.repeat(
        pd.date_range('2021-05-01', periods=5, freq='W'), 2),
    'DC': ['A', 'B'] * 5,
    'Error Percent': pd.Series(np.random.randint(10, 100, 10), dtype=str) + '%'
})

df

  hellofresh delivery week DC Error Percent
0               2021-05-02  A           88%
1               2021-05-02  B           71%
2               2021-05-09  A           26%
3               2021-05-09  B           83%
4               2021-05-16  A           18%
5               2021-05-16  B           72%
6               2021-05-23  A           37%
7               2021-05-23  B           40%
8               2021-05-30  A           90%
9               2021-05-30  B           17%

pivoted_df

DC                           A     B
hellofresh delivery week            
2021-05-02                88.0  71.0
2021-05-09                26.0  83.0
2021-05-16                18.0  72.0
2021-05-23                37.0  40.0
2021-05-30                90.0  17.0

相关问题 更多 >