我的条形图与平均值不一致,颜色也不正确(Plotly/Python)

xxls0lw8  于 2022-12-28  发布在  Python
关注(0)|答案(1)|浏览(133)

我想使用plotly express(px.bar)构建条形图,但是当我定义颜色时,条形图没有与x条对齐,就像这样

定义颜色之前

定义颜色后

定义颜色参数后,条形图与xbar不一致,不像默认条形图,为什么颜色与 Dataframe 中的颜色列不匹配?
这是代码和 Dataframe

import pandas as pd

df = pd.DataFrame({
    'label': ['Apple', 'Banana', 'Orange', 'Grape', 'Apple', 'Banana', 'Orange', 'Grape', 'Grape'],
    'Count': [1, 2, 2, 2, 3, 5, 6, 3, 3],
    'Color': ['crimson', 'lightslategrey', 'lightslategrey', 'lightslategrey', 'crimson', 'lightslategrey', 'lightslategrey', 'lightslategrey', 'lightslategrey']
})

import plotly.express as px
fig_bar = px.bar(df, x='label', y='Count', color = 'Color',
                 barmode='group')

fig_bar.show()

** Dataframe **

label   Count   Color
0   Apple   1   crimson
1   Banana  2   lightslategrey
2   Orange  2   lightslategrey
3   Grape   2   lightslategrey
4   Apple   3   crimson
5   Banana  5   lightslategrey
6   Orange  6   lightslategrey
7   Grape   3   lightslategrey
8   Grape   3   lightslategrey

有人知道为什么会这样吗?谢谢!

idv4meu8

idv4meu81#

您需要删除barmode="group"删除条形图模式后,绘图按预期执行。
同样,要从 Dataframe 中获取颜色以显示每个条,您需要指定color_discrete_sequence。有关详细信息,请参阅this

代码

import pandas as pd
import plotly.express as px

df = pd.DataFrame({
    'label': ['Apple', 'Banana', 'Orange', 'Grape', 'Apple', 'Banana', 'Orange', 'Grape', 'Grape'],
    'Count': [1, 2, 2, 2, 3, 5, 6, 3, 3],
    'Color': ['crimson', 'lightslategrey', 'lightslategrey', 'lightslategrey', 'crimson', 'lightslategrey', 'lightslategrey', 'lightslategrey', 'lightslategrey']
})

chart_df = df.groupby(by = ['label', 'Color']).sum().reset_index()
fig_bar = px.bar(chart_df, x='label', y='Count', color = 'Color', color_discrete_sequence=chart_df['Color'])
fig_bar.update_layout(showlegend=False)
fig_bar.show()

注:

如果您希望将白线保留在条内,则可以使用以下命令:

fig_bar = px.bar(df, x='label', y='Count', color = 'Color', color_discrete_sequence=df['Color'])

相关问题