绘制堆栈图数组值

问题描述 投票:0回答:1

如何将整个 Y 数组的值堆叠为 X 值?

import plotly.graph_objects as go

forx = [1,2,3,4,5]
fory = [[4,6,8], [2,9], [5], [3,1,5,2], [6,8]]

data = []

for idx, i in enumerate(forx):
          data.append(go.Bar(name=str(i), x=forx, y=fory[idx]))

fig.update_layout(barmode='stack')
fig.show()

对于 X 轴值 1 堆叠 Y 轴数组 [4,6,8],而不是所有数组 4,2,5,3,6 中的 0 索引

python statistics plotly
1个回答
0
投票

y
中的
go.Bar(..., y=y)
参数接收y值跨类别,意味着逐层。因此,
data
应该在每次迭代中获得一层堆栈。

您可以通过转置

fory
值并为没有任何值的图层添加 0 来获得所需的内容。或者只是手动将
fory
重新排列为分层嵌套列表。

这会给你你想要的:

import plotly.graph_objects as go
import numpy as np

forx = [1,2,3,4,5]
fory = np.array([[4,6,8,0], [2,9,0,0], [5,0,0,0], [3,1,5,2], [6,8,0,0]])
fory_layerwise = fory.T # transposing to a layered format

num_layers = 4

data = []

for layer in range(num_layers):
          data.append(go.Bar(name="layer "+str(layer), x=forx, y=fory_layerwise[layer]))

fig = go.Figure(data=data)
fig.update_layout(barmode='stack')
fig.show()
© www.soinside.com 2019 - 2024. All rights reserved.