在 x 轴上偏移 Plotly 的跟踪数据

5
我正在尝试使用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()

enter image description here

2个回答

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"来获取您的x轴上的文本
  • 使用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()

with tick vals


谢谢。我尝试了类似这样的东西。问题是,如果我使用整数值x,则似乎无法删除15和25的刻度(即使我保持图形具有相同的尺寸)。 - Hemanshu Das
使用 fig2.update_xaxes(tickvals=x_data),请参见此处,并添加如上。 - jayveesea

0

获取属于同一组的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()

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接