在 plotly express 中创建 plotly distplot 图表

Posted

技术标签:

【中文标题】在 plotly express 中创建 plotly distplot 图表【英文标题】:Create plotly distplot charts in plotly express 【发布时间】:2022-01-16 13:28:22 【问题描述】:

我正在尝试创建一个类似于 plotly create_distplot 的图形,但是我想将线条样式更改为虚线。查看函数,我看到他们说该函数已弃用,我应该改用 plotly.express 函数。

**this function is deprecated**, use instead :mod:`plotly.express` functions

但是,我在 plotly.express 示例中找不到任何显示如何创建类似 distplot 的内容的示例。 plotly 网站上的所有示例仍然使用 create_distplot。我可以使用已弃用的功能,除了我想将线条样式调整为虚线,而且我看不到任何改变线条设置的方法,只有颜色。具体来说,我希望获取直方图数据并创建一个线和地毯图,其中线显示分布曲线,如下例所示。有人可以帮我弄清楚如何在 plotly.express 中执行此操作,或者至少如何更改 distplot 的线条样式?

这是我正在使用的情节参考。 https://plotly.com/python/distplot/#basic-distplot

import plotly.figure_factory as ff
import numpy as np

x1 = np.random.randn(200) - 1
x2 = np.random.randn(200)
x3 = np.random.randn(200) + 1

hist_data = [x1, x2, x3]

group_labels = ['Group 1', 'Group 2', 'Group 3']
colors = ['#333F44', '#37AA9C', '#94F3E4']

# Create distplot with curve_type set to 'normal'
fig = ff.create_distplot(hist_data, group_labels, show_hist=False, colors=colors)

# Add title
fig.update_layout(title_text='Curve and Rug Plot')
fig.show()

【问题讨论】:

【参考方案1】:

你可以更新虚线:

import plotly.figure_factory as ff
import numpy as np

x1 = np.random.randn(200) - 1
x2 = np.random.randn(200)
x3 = np.random.randn(200) + 1

hist_data = [x1, x2, x3]

group_labels = ['Group 1', 'Group 2', 'Group 3']
colors = ['#333F44', '#37AA9C', '#94F3E4']

# Create distplot with curve_type set to 'normal'
fig = ff.create_distplot(hist_data, group_labels, show_hist=False, colors=colors)

# Add title
fig.update_layout(title_text='Curve and Rug Plot')
fig.for_each_trace(lambda t: t.update(line="dash":"dash") if t.mode=="lines" else t)

【讨论】:

【参考方案2】:

除了.update_layout(),您还可以使用.update_traces()

fig.update_traces(line='dash': 'dash')

完整代码:

import plotly.figure_factory as ff
import numpy as np

x1 = np.random.randn(200) - 1
x2 = np.random.randn(200)
x3 = np.random.randn(200) + 1

hist_data = [x1, x2, x3]

group_labels = ['Group 1', 'Group 2', 'Group 3']
colors = ['#333F44', '#37AA9C', '#94F3E4']

# Create distplot with curve_type set to 'normal'
fig = ff.create_distplot(hist_data, group_labels, show_hist=False, colors=colors)
# Add title
fig.update_layout(title_text='Curve and Rug Plot')
fig.update_traces(line='dash': 'dash')
fig.show()

输出:

线条令人愉悦地虚线。

【讨论】:

以上是关于在 plotly express 中创建 plotly distplot 图表的主要内容,如果未能解决你的问题,请参考以下文章

在 Plotly Express 中删除自定义悬停卡右侧的颜色

如何在 plotly 中覆盖同一图中的两个图(在 plotly 中创建帕累托图)?

在 Plotly 中创建 3D 曲面图

如何使用python在streamlit和plotly中创建列?

有没有办法在 R 中创建 Plotly 图表的全屏弹出窗口?

如何以编程方式在 iphone 中创建图表