gpt4 book ai didi

python - Plotly:如何从单条轨迹制作堆积条形图?

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:58 25 4
gpt4 key购买 nike

是否可以并排放置两个堆叠条形图,每个条形图都来自一个列?

这是我的 df:

Field       Issue

Police Budget cuts
Research Budget cuts
Police Time consuming
Banking Lack of support
Healthcare Lack of support
Research Bureaucracy
Healthcare Bureaucracy
Banking Budget cuts

我想要一个字段堆叠条形图,旁边是按字段排列的问题堆叠条形图。

谢谢大家!

最佳答案

有关如何使用提供的特定数据集制作堆叠条形图的示例,请查看 Plotly-Dash: Want two stacked bar charts side by side from single df column 中的建议。 .以下答案说明了您如何不能使用单条轨迹制作堆积条形图。为了向您展示原因,我将从看似多余的细节开始。但希望最终一切都会清楚。


在 plotly 方面,trace 用于描述图形对象,例如ScatterBar,如下所示下面的片段。

片段 1.1:

import plotly.graph_objs as go
fig = go.Figure(go.Bar(x=['CategoryA', 'CategoryB', 'CategoryC'],
y=[20, 14, 23]))
fig.update_layout(template = 'plotly_dark').show()

如果您查看上面的代码片段,您会发现that 是一个条形图,带有 go.Bar(x=['CategoryA', ...

plotly 1.1:

enter image description here

现在,我们如何添加一些东西使其成为堆积图?如果您首先向 x 添加一个元素,例如 'CategoryD',那么什么都不会 会发生。这有点有趣,因为您可能会期待一条错误消息。

图 1.2:增加的 x 值

enter image description here

片段 1.2

import plotly.graph_objs as go
fig = go.Figure(go.Bar(x=['CategoryA', 'CategoryB', 'CategoryC', 'CategoryD'],
y=[20, 14, 23]))
fig.update_layout(template = 'plotly_dark').show()

但在 CategoryD 具有相应的 y 值(如 15)之前没有任何反应:

图 1.3: 添加 x 和 y 值

到目前为止的结论:将值添加到 xy 将在 x 轴上添加另一个类别并在 y 轴上添加一个值。如您所见,这里还没有堆叠:

enter image description here

片段 1.3:

import plotly.graph_objs as go
fig = go.Figure(go.Bar(x=['CategoryA', 'CategoryB', 'CategoryC', 'CategoryD'],
y=[20, 14, 23, 15]))
fig.update_layout(template = 'plotly_dark').show()

但是,如果您使用 barmode='stack' 添加布局术语会怎么样?


片段 2:

import plotly.graph_objs as go

fig = go.Figure(go.Bar(x=['CategoryA', 'CategoryB', 'CategoryC', 'CategoryD'],
y=[20, 14, 23, 15]))

fig.update_layout(barmode='stack',
title = 'Stacked bar chart',
template = 'plotly_dark').show()

plotly 2: barmode='stack'

enter image description here

我能理解任何人希望这会将所有数据堆叠在一个跟踪中,但 plotly 并不是那样构建的。要获得所需内容,您必须使用 fig.add_trace(go.Bar())simply fig.add_bar() 添加另一条轨迹。

片段 3:

import plotly.graph_objs as go
fig = go.Figure(go.Bar(x=['CategoryA', 'CategoryB', 'CategoryC', 'CategoryD'],
y=[20, 14, 23, 15]))
fig.add_bar(x=['CategoryA', 'CategoryB', 'CategoryC', 'CategoryD'],
y=[5, 14, 4, 20])
fig.update_layout(barmode='stack',
title = 'Stacked bar chart!',
template = 'plotly_dark').show()

图 3: 添加迹线

enter image description here

请注意,go.Bar() 对象都没有分配任何名称,默认情况下将它们命名为 trace 0trace 1。所以我想说跟踪包含或“显示”绘图对象而不是将它们称为同一事物更为正确。如果您想指定其他名称,您可以这样使用,例如 name = 'segment 1' ,如下所示:

片段 4:

import plotly.graph_objs as go
fig = go.Figure(go.Bar(x=['CategoryA', 'CategoryB', 'CategoryC', 'CategoryD'],
y=[20, 14, 23, 15],
name = 'segment 1'))
fig.add_bar(x=['CategoryA', 'CategoryB', 'CategoryC', 'CategoryD'],
y=[5, 14, 4, 20],
name = 'segment 2')
fig.update_layout(barmode='stack',
title = 'Stacked bar chart!',
template = 'plotly_dark').show()

图 4: 添加命名迹线

enter image description here

如果您想“取消堆叠”条形图,只需将条形图更改为 'group',如下所示:

fig.update_layout(barmode='group'),

plotly 5:

enter image description here

关于python - Plotly:如何从单条轨迹制作堆积条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55240033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com