如何将整个 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 索引
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()