【问题标题】:Offset Plotly trace on x-axes在 x 轴上偏移绘图跟踪
【发布时间】:2021-02-06 10:01:09
【问题描述】:

我正在尝试使用 add_trace() 在同一个图上绘制多个类别。理想情况下,我希望不同的痕迹有轻微的偏移,这样标记就不会重叠。我无法弄清楚如何实现它。

这是一个说明性代码,以及我当前的结果。 add_trace() 似乎没有偏移量的参数。

import plotly.graph_objects as go
fig2 = go.Figure()

x_data = ['10 days', '20 days', '30 days']

y_data1 = [0.4, 0.7, 0.9]
y_err_data1 = [0.025, 0.03, 0.05]
y_data2 = [0.6, 0.65, 0.7]
y_err_data2 = [0.05, 0.03, 0.01]

fig2.add_trace(go.Scatter(x=x_data,
                             y=y_data1,
                             error_y = dict(type='data', symmetric=True,  array=y_err_data1, visible=True),
                             mode = 'markers'))

fig2.add_trace(go.Scatter(x=x_data,
                             y=y_data2,
                             error_y = dict(type='data', symmetric=True,  array=y_err_data2, visible=True),
                             mode = 'markers'))

fig2.show()

【问题讨论】:

    标签: python plot plotly trace scatter


    【解决方案1】:

    您可以通过一些修改来完成此操作:

    • 使用x_data=[10,20,30],以便我们可以轻松地添加/减去它。然后对于go.Scatter 的x 输入,使用x_data=[i-.1 for i in x_data] 之类的东西来创建偏移量。选择您想要的偏移量,我在这里使用 +/- 0.1。
    • 或者,您可以使用 numpy 数组 x_data=np.array([10,20,30])。然后go.Scatter 的 x 输入更容易使用x=x_data-.1
    • 使用ticksuffix=" days" 将文本重新显示在您的 xaxis 上
    • 使用tickvals=x_data 指定准确的刻度值。

    大家一起:

    import plotly.graph_objects as go
    import numpy as np
    fig2 = go.Figure()
    
    #x_data = [10,20,30]
    x_data = np.array([10,20,30])
    
    y_data1 = [0.4, 0.7, 0.9]
    y_err_data1 = [0.025, 0.03, 0.05]
    y_data2 = [0.6, 0.65, 0.7]
    y_err_data2 = [0.05, 0.03, 0.01]
    
    fig2.add_trace(go.Scatter(x=x_data+0.1, #x=[i+.1 for i in x_data]
                                 y=y_data1,
                                 error_y = dict(type='data', symmetric=True,  array=y_err_data1, visible=True),
                                 mode = 'markers'))
    
    fig2.add_trace(go.Scatter(x=x_data-0.1, #x=[i-.1 for i in x_data]
                                 y=y_data2,
                                 error_y = dict(type='data', symmetric=True,  array=y_err_data2, visible=True),
                                 mode = 'markers'))
    
    fig2.update_xaxes(ticksuffix=" days", tickvals=x_data)
    fig2.show()
    

    【讨论】:

    • 谢谢。我尝试过这样的事情。问题是如果我使用 x 作为整数值,我似乎无法移除 15 和 25 的棍子。 (如果我保持图表的尺寸相同)。
    • 使用fig2.update_xaxes(tickvals=x_data),见here并在上面添加。
    【解决方案2】:

    在属于同一组的 plotly 箱形图之间获得偏移的另一种解决方案是使用 offsetgroup 参数和 boxmode 参数,如下所示。 您必须对图例进行一些处理,否则它会多次显示所有内容。

    import plotly.graph_objects as go
    
    colors={'SF Zoo': 'red', 'LA Zoo': 'blue'}
    
    fig = go.Figure(
        data=[
            go.Box(x0='giraffes', name='SF Zoo', y=[1, 2, 3], offsetgroup="SF Zoo", line_color=colors['SF Zoo']),
            go.Box(x0='giraffes', name='LA Zoo', y=[3, 4, 5], offsetgroup="LA Zoo", line_color=colors['LA Zoo']),
            go.Box(x0='elephants', name='SF Zoo', y=[1, 2, 3], offsetgroup="SF Zoo", line_color=colors['SF Zoo'], showlegend=False),
            go.Box(x0='elephants', name='LA Zoo', y=[0, 1, 2, 4], offsetgroup="LA Zoo", line_color=colors['LA Zoo'], showlegend=False)
        ]
    )
    
    fig.update_layout(boxmode='group')
    fig.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      相关资源
      最近更新 更多