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

新手上路,请多包涵

Plotly Express 有一种直观的方式来提供预格式化的 plotly plots,代码行最少; Seaborn 如何为 matplotlib 做这件事。

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

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

原文由 Ébe Isaac 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

您可以使用:

 fig3 = go.Figure(data=fig1.data + fig2.data)

其中 fig1fig2 使用 px.line() and px.scatter() 如您所见, fig3 是使用 plotly.graph_objects 构建的。

一些细节:

One approach that I use alot is building two figures fig1 and fig2 using plotly.express and then combine them using their data attributes together with a 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()

阴谋:

在此处输入图像描述

原文由 vestland 发布,翻译遵循 CC BY-SA 4.0 许可协议

编辑:固定错字。

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

 fig1 = px.bar(...)
fig2 = px.line(...)
fig3 = px.line(...)
all_fig = go.Figure(data=fig1.data + fig2.data + fig3.data, layout = fig1.layout)

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

 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>'

(条形图是 all_fig[‘data’][0])。

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

原文由 eton blue 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题