gpt4 book ai didi

python - Plotly:如何制作 3D 堆叠直方图?

转载 作者:行者123 更新时间:2023-12-05 03:55:10 36 4
gpt4 key购买 nike

我有几个使用 plotly 成功绘制的直方图像这样:

fig.add_trace(go.Histogram(x=np.array(data[key]), name=self.labels[i]))

我想创建类似 this 3D stacked histogram 的东西但不同的是,里面的每一个2D直方图都是真实的直方图,而不仅仅是硬编码的线(我的数据是[0.5 0.4 0.5 0.7 0.4]所以直接使用Histogram很方便)

请注意,我要问的与 this 不相似因此也不同于 this .在 matplotlib 示例中,数据直接呈现在二维数组中,因此直方图是第三维。在我的例子中,我想为一个函数提供许多已经计算出的直方图。

最佳答案

下面的代码片段负责图形的分箱和格式化,因此它显示为使用 go.Scatter3Dnp.Histogram 的多个轨迹的堆叠 3D 图表.输入是使用 np.random.normal(50, 5, size=(300, 4)) 随机数的数据帧如果这是您可以使用的东西,我们可以讨论更多其他细节:

图 1:角度 1

enter image description here

图 2: 角度 2

enter image description here

完整代码:

# imports
import numpy as np
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio

pio.renderers.default = 'browser'

# data
np.random.seed(123)
df = pd.DataFrame(np.random.normal(50, 5, size=(300, 4)), columns=list('ABCD'))

# plotly setup
fig=go.Figure()

# data binning and traces
for i, col in enumerate(df.columns):
a0=np.histogram(df[col], bins=10, density=False)[0].tolist()
a0=np.repeat(a0,2).tolist()
a0.insert(0,0)
a0.pop()
a1=np.histogram(df[col], bins=10, density=False)[1].tolist()
a1=np.repeat(a1,2)
fig.add_traces(go.Scatter3d(x=[i]*len(a0), y=a1, z=a0,
mode='lines',
name=col
)
)
fig.show()

关于python - Plotly:如何制作 3D 堆叠直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60398154/

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