Plotly:如何使用 Plotly Express 组合散点图和线图?

Ébe*_*aac 7 python plotly plotly-python plotly-express

Plotly Express 有一种直观的方式,可以用最少的代码行提供预先格式化的绘图;有点像 Seaborn 如何为 matplotlib 做到这一点。

可以在 Plotly 上添加图迹以在现有线图上获得散点图。但是,我在 Plotly Express 中找不到这样的功能。

是否可以在 Plotly Express 中组合散点图和折线图?

ves*_*and 14

您可以使用:

fig3 = go.Figure(data=fig1.data + fig2.data)
Run Code Online (Sandbox Code Playgroud)

其中fig1fig2分别使用px.line()和构建px.scatter()。并且fig3,如您所见,是使用plotly.graph_objects.

一些细节:

一种方法,我用了很多正在建设两个数字fig1fig2使用plotly.express,然后使用他们的数据与属性一起结合他们go.Figure / plotly.graph_objects这样的对象:

import plotly.express as px
import plotly.graph_objects as go
df = px.data.iris()

fig1 = px.line(df, x="sepal_width", y="sepal_length")
fig1.update_traces(line=dict(color = 'rgba(50,50,50,0.2)'))

fig2 = px.scatter(df, x="sepal_width", y="sepal_length", color="species")

fig3 = go.Figure(data=fig1.data + fig2.data)
fig3.show()
Run Code Online (Sandbox Code Playgroud)

阴谋:

在此处输入图片说明

  • 这是 Plotly 和 Dash 集成的最佳解决方案。谢谢你! (2认同)

eto*_*lue 6

编辑:修复了拼写错误。

这非常有效,并且对于 FlipSTAR 关于向组合图添加全局布局的澄清更加有用。然而,有时全局布局并不能涵盖所有内容。例如,在我的例子中(一个堆叠条形图和两条单散点图线),我的全局布局导致我丢失了散点图图例。幸运的是,您可以通过针对特定数字向组合Fig 添加其他参数。例如,给定一个假设:

fig1 = px.bar(...)
fig2 = px.line(...)
fig3 = px.line(...)
all_fig = go.Figure(data=fig1.data + fig2.data + fig3.data, layout = fig1.layout)
Run Code Online (Sandbox Code Playgroud)

这是一个条形图和两个散点图,每个散点图都有一条线,您可以使用以下命令为每条线添加图例:

all_fig['data'][1]['showlegend']=True
all_fig['data'][1]['name']='Line 1 Name'
all_fig['data'][1]['hovertemplate']='Line 1 Name<br>x=%{x}<br>y=%{y}<extra></extra>'
all_fig['data'][2]['showlegend']=True
all_fig['data'][2]['name']='Line 2 Name'
all_fig['data'][2]['hovertemplate']='Line 2 Name<br>x=%{x}<br>y=%{y}<extra></extra>'
Run Code Online (Sandbox Code Playgroud)

(栏是 all_fig['data'][0])。

由于某种原因,该名称不会在悬停时显示,除非您明确将其添加到“hovertemplate”。