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

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

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

【问题讨论】:

    标签: plotly plotly-python


    【解决方案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()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-30
        • 1970-01-01
        • 2023-01-03
        • 2016-01-08
        • 1970-01-01
        • 1970-01-01
        • 2017-06-15
        • 1970-01-01
        相关资源
        最近更新 更多