Plotly:仅在特定子图中堆积条形图

Posted

技术标签:

【中文标题】Plotly:仅在特定子图中堆积条形图【英文标题】:Plotly: stacked bars only in specific subplots 【发布时间】:2018-11-14 16:44:20 【问题描述】:

我有两个带有两列的条形图,创建如下:

fig = tools.make_subplots(rows=1, cols=2)
trace1 = go.Bar(x=x1 , y=y1)
trace2 = go.Bar(x=x2, y=y2)
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 1)
trace3 = go.Bar(x=x3 , y=y3)
trace4 = go.Bar(x=x4, y=y4)
fig.append_trace(trace3, 1, 2)
fig.append_trace(trace4, 1, 2)

我只想要第二个带有堆叠条的子图。我尝试了以下

fig['layout']["xaxis2"].update(barmode='stack')

但这当然行不通。如何将“堆栈”属性仅应用于第二个子图而不是整个图?

谢谢

【问题讨论】:

【参考方案1】:

正如 Plotly 程序员在 this forum answer 中解释的那样,barmode 是一个图形范围的参数,因此目前不可能。

【讨论】:

【参考方案2】:

您可以使用offsetgroup = same(所有堆叠的图表中的数字相同)。 并在第二栏base=(first bar y)

from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(rows=1, cols=2, shared_yaxes=True)

fig.add_trace(go.Bar(name='dogs', x=[1, 2, 3], y=[4, 5, 6],
                     marker_color='blue',
                     marker=dict(color=[4, 5, 6], coloraxis="coloraxis")),
              row=1, col=1)

fig.add_trace(go.Bar(name='cats', x=[1, 2, 3], y=[1, 2, 3],
                     marker_color='yellow',
                     marker=dict(color=[4, 5, 6], coloraxis="coloraxis")),
              row=1, col=1)
female_y = [4,5,6]

fig.add_trace(go.Bar(name='female', x=[1, 2, 3], y=female_y,
                     offsetgroup=1, marker_color='green',
                     marker=dict(color=[4, 5, 6])),
              row=1, col=2)

fig.add_trace(go.Bar(name='male', x=[1, 2, 3], y=[2, 3, 5],
                     offsetgroup=1, marker_color='red',
                     base = female_y ,
                     marker=dict(color=[2, 3, 5])),
              row=1, col=2)

fig.add_trace(go.Bar(name='others', x=[1, 2, 3], y=[1, 1.2, 2.5],
                     offsetgroup=2, marker_color='rgb(0,255,255)',
                     marker=dict(color=[2, 3, 5])),
              row=1, col=2)

fig.show()

【讨论】:

以上是关于Plotly:仅在特定子图中堆积条形图的主要内容,如果未能解决你的问题,请参考以下文章

Plotly:如何从单条迹线制作堆积条形图?

Plotly中的双轴堆积条形图

Plotly:如何使用 go.Bar 向堆积条形图添加数据标签?

Plotly:如何重命名 plotly express 堆积条形图的图例元素?

如何更改使用 Plotly Express 创建的堆积条形图的文本方向?

按小时重新采样 Pandas DataFrame 并使用 Plotly 绘制堆积条形图