有没有办法在plotlyexpress中实现堆叠或分组条形图

cha*_*mvs 5 python plotly plotly-express

我正在尝试在绘图表达中实现分组条形图(或)堆叠条形图

我已经使用plotly(这非常简单)实现了它,下面是它的代码。数据框中共有六列 ['Rank', 'NOC', 'Gold', 'Silver', 'Bronze', 'Total']

`
trace1=go.Bar(x=olympics_data['NOC'],y=olympics_data['Gold'],marker=dict(color='green',opacity=0.5),name="Gold")
trace2=go.Bar(x=olympics_data['NOC'],y=olympics_data['Silver'],marker=dict(color='red',opacity=0.5),name="Silver")
trace3=go.Bar(x=olympics_data['NOC'],y=olympics_data['Bronze'],marker=dict(color='blue',opacity=0.5),name="Bronze")

data=[trace1,trace2,trace3]

layout = go.Layout(title="number of medals in each category for various countries",xaxis=dict(title="countries"),yaxis=dict(title="number of medals"),
                   barmode="stack")

fig = go.Figure(data,layout)

fig.show()`
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

我期待使用plotly-express 得到类似的输出。

shi*_*hin 5

px.bar()您可以按照此链接安排您的数据来使用。

\n

或者您可以考虑relativebarmode().

\n
\n

barmode (str (默认 \'relative\')) \xe2\x80\x93 \'group\'、\'overlay\' 或 \n\'relative\' 之一 在 \'relative\' 模式下,条形堆叠大于零表示正值,小于零表示负值。在“覆盖”模式下,\n条形图被绘制在彼此之上。在“组”模式下,条形图彼此相邻放置。

\n
\n

使用overlay

\n
import plotly.express as px\niris = px.data.iris()\ndisplay(iris)\nfig = px.histogram(iris, x=\'sepal_length\', color=\'species\', \n                           nbins=19, range_x=[4,8], width=600, height=350,\n                           opacity=0.4, marginal=\'box\')\nfig.update_layout(barmode=\'overlay\')\nfig.update_yaxes(range=[0,20],row=1, col=1)\nfig.show()\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

使用relative

\n
fig.update_layout(barmode=\'relative\')\nfig.update_yaxes(range=[0,20],row=1, col=1)\nfig.show()\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

使用group

\n
fig.update_layout(barmode=\'group\')\nfig.show()\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n


nic*_*ten 0

是的,Plotly Express 支持使用px.bar(). 带有示例的完整文档位于此处https://plot.ly/python/bar-charts/