如何使用 Plotly 控制顶部的跟踪图?

Posted

技术标签:

【中文标题】如何使用 Plotly 控制顶部的跟踪图?【英文标题】:How do I control which trace plots on top with Plotly? 【发布时间】:2020-02-05 06:34:32 【问题描述】:

我正在使用 Plotly python 库来生成一个带有几个小提琴图和几个填充散点图的图形。无论我在代码中调用个人fig.add_trace 的顺序如何,小提琴图总是绘制在散点图后面。

有人知道是否有控制布局或绘图顺序的特定方法吗?像zorder=3 这样的东西?

【问题讨论】:

【参考方案1】:

目前,您可以通过对数据数组中的跟踪对象进行排序来控制跟踪类型内的跟踪顺序,但不能跨跟踪类型,因此小提琴将始终绘制在散点图后面。

【讨论】:

这期间有变化吗?【参考方案2】:

我找到了一个巧妙的解决方法。在这种情况下,您首先将图形对象分配给一个变量:

PLOT1 = go.Scatter(STUFF)
PLOT2 = go.Scatter(STUFF)
PLOT3 = go.Scatter(STUFF)

然后您可以指定具有所需顺序的字典:

order = "1":PLOT3, "2":PLOT1, "3":PLOT2

for i in np.arange(1, len(order) + 1):
    for plot_order, trace in order.items():
        if plot_order == str(i):
            fig.add_trace(trace)

这样您就可以使用字典来控制顺序。我希望它有帮助!它帮助了我。

【讨论】:

【参考方案3】:

对此有一个功能请求,并提出了一种有时可行的解决方法:feature request: z-ordering parameter for traces。

import plotly.express as px
import plotly.graph_objects as go

fig = px.scatter(x=[1,2,3,4], y=[1,2,3,4], size=[1,2,3,4], color=["a","a","b","b"])
fig.add_trace(go.Scatter(x=[1,2,3,4], y=[1,2,3,4], mode="lines", line_color="black"))

# Re-order the data:
fig.data = (fig.data[1],fig.data[0])
# fig.data = fig.data[::-1]  # alternatively, via slicing

fig.show()

【讨论】:

以上是关于如何使用 Plotly 控制顶部的跟踪图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Plotly Python组合热图和轮廓图

Plotly:将绘图图导出为 png 时如何仅导出活动图例?

Plotly:如何使用 plotly.graph_objects 将两个 3D 图放在同一个图上?

如何使用 plotly 自定义平行类别图颜色? Python版

如何使用 Plotly Javascript 显示循环进度图

Plotly:如何使用 DASH 回调将多项式拟合线添加到 plotly go.scatter 图?