问题描述
我正在尝试使用 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.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,array=y_err_data2,mode = 'markers'))
fig2.show()
解决方法
您可以通过一些修改来实现这一点:
- 使用
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,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,30]
x_data = np.array([10,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.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,array=y_err_data2,mode = 'markers'))
fig2.update_xaxes(ticksuffix=" days",tickvals=x_data)
fig2.show()