首页 > 解决方案 > Plotly:如何在直方图中同时显示正态分布和核密度估计?

问题描述

对于绘图工厂分布图,默认分布是kde核密度估计):

在此处输入图像描述

您可以通过设置来覆盖默认值curve = 'normal'

在此处输入图像描述

但是如何在同一个图中同时显示 kde 和正态曲线?分配一个类似的列表是curve_type = ['kde', 'normal']行不通的。

完整代码:

import plotly.figure_factory as ff
import plotly.graph_objects as go
import plotly.express as px
import numpy as np
np.random.seed(2)

x = np.random.randn(1000)
hist_data = [x]
group_labels = ['distplot'] # name of the dataset

mean = np.mean(x)
stdev_pluss = np.std(x)
stdev_minus = np.std(x)*-1

fig = ff.create_distplot(hist_data, group_labels, curve_type='kde')
fig.update_layout(template = 'plotly_dark')
fig.show()

标签: pythonplotlyplotly-python

解决方案


最简单的方法是使用以下方法构建另一个图形fig2curve_type = 'normal'从那里获取值:

fig2 = ff.create_distplot(hist_data, group_labels, curve_type = 'normal')
normal_x = fig2.data[1]['x']
normal_y = fig2.data[1]['y']

然后将这些值包含在第一个fig使用中,fid.add_trace(go.Scatter())如下所示:

fig2 = ff.create_distplot(hist_data, group_labels, curve_type = 'normal')
normal_x = fig2.data[1]['x']
normal_y = fig2.data[1]['y']
fig.add_traces(go.Scatter(x=normal_x, y=normal_y, mode = 'lines',
                          line = dict(color='rgba(0,255,0, 0.6)',
                                      #dash = 'dash'
                                      width = 1),
                          name = 'normal'
                         ))
fig.show()

绘制两条密度曲线:

在此处输入图像描述


推荐阅读