Plotly Express 有一种直观的方式,可以用最少的代码行提供预先格式化的绘图;有点像 Seaborn 是如何为 matplotlib 做的。
可以在 Plotly 上添加绘图轨迹以在现有线图上获得散点图。但是,我在 Plotly Express 中找不到这样的功能。
是否可以在 Plotly Express 中结合散点图和折线图?
Plotly Express 有一种直观的方式,可以用最少的代码行提供预先格式化的绘图;有点像 Seaborn 是如何为 matplotlib 做的。
可以在 Plotly 上添加绘图轨迹以在现有线图上获得散点图。但是,我在 Plotly Express 中找不到这样的功能。
是否可以在 Plotly Express 中结合散点图和折线图?
您可以使用:
fig3 = go.Figure(data=fig1.data + fig2.data)
其中fig1
和fig2
分别使用px.line()
和构建px.scatter()
。fig3
如您所见,它是使用plotly.graph_objects
.
我经常使用的一种方法是构建两个图形fig1
,然后fig2
使用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()
如果你想扩展方法
fig3 = go.Figure(data=fig1.data + fig2.data)
如另一个答案所述,这里有一些提示。
fig1.data
并且fig2.data
是保存情节所需的所有信息并将+
它们连接起来的常见元组。
# this will hold all figures until they are combined
all_figures = []
# data_collection: dictionary with Pandas dataframes
for df_label in data_collection:
df = data_collection[df_label]
fig = px.line(df, x='Date', y=['Value'])
all_figures.append(fig)
import operator
import functools
# now you can concatenate all the data tuples
# by using the programmatic add operator
fig3 = go.Figure(data=functools.reduce(operator.add, [_.data for _ in all_figures]))
fig3.show()