如何使用Plotly控制顶部的迹线?

时间:2019-10-07 23:47:52

标签: plotly plotly-python

我正在使用Plotly python库生成带有几个小提琴图和几个填充的散点图的图形。无论我的代码中有fig.add_trace个单独的调用顺序如何,小提琴图始终在散点图之后。

有人知道是否存在控制布局或打印顺序的特定方法吗?像zorder=3一样?

Scatter Plots in front of Violins

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我找到了解决之道。在这种情况下,您首先将图形对象分配给变量:

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)

通过这种方式,您可以控制字典的顺序。希望对您有所帮助!它帮助了我。

答案 2 :(得分:0)

对此有一个功能请求,并且提出了一种在某些时候有效的解决方法: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()