Python Plotly:如何消除使用add_annotation()创建的箭头尾部后面的间隙?

Python Plotly:如何消除使用add_annotation()创建的箭头尾部后面的间隙?,python,graphics,plotly,visualization,plotly-python,Python,Graphics,Plotly,Visualization,Plotly Python,我正在使用plotly.graph\u objects.Figure.add\u annotation()函数将箭头添加到我的绘图中-请参见下面的简单示例代码: 导入plotly.graph\u对象 图=go.Figure() 图添加注释(ax=3,axref='x',ay=2,ayref='y', x=4,外部参照='x',y=2,yref='y', 箭头=3) 图添加_形(x0=1,x1=3,外部参照='x', y0=1,y1=3,yref='y') 图添加_形(x0=4,x1=6,外部参照

我正在使用
plotly.graph\u objects.Figure.add\u annotation()
函数将箭头添加到我的绘图中-请参见下面的简单示例代码:

导入plotly.graph\u对象
图=go.Figure()
图添加注释(ax=3,axref='x',ay=2,ayref='y',
x=4,外部参照='x',y=2,yref='y',
箭头=3)
图添加_形(x0=1,x1=3,外部参照='x',
y0=1,y1=3,yref='y')
图添加_形(x0=4,x1=6,外部参照='x',
y0=1,y1=3,yref='y')
图:更新_布局(xaxis_范围=[0,7],yaxis_范围=[0,4])
图2(图3)
这将渲染以下图像:

如您所见,左矩形和箭头尾部之间有一个小间隙是否有办法消除此间隙,以便箭头完全按照参数
ax
ay
的指定开始?
我已尝试查看添加注释()函数的其他相关参数,但找不到线索。

这应该可以:

xanchor = 'right'

完整代码: 说明: 根据,

xanchor–设置文本框的水平位置锚点此锚点将
x
位置绑定到批注的“左”、“中”或“右”。例如,如果将
x
设置为1,
xref
设置为“纸张”,将
xanchor
设置为“右侧”,则注释的最右侧部分与打印区域的最右侧边缘对齐。如果为“自动”,则对于数据引用的批注或有箭头的批注,锚定相当于“中心”,而对于无箭头引用的图纸,拾取的锚定对应于最近的边


即使没有实际的注释文本,仍会呈现(占位符)文本字段(默认情况下锚定到
“中心”
),这就是推动箭头尾部的原因。将xanchor设置为
“right”
可确保箭头从预期位置开始,同时将空文本字段推到该位置的左侧。

请提供说明和/或文档?你是怎么知道/发现这个的?谢谢@Brunox13 Plotlys展示了一个关于
xanchor=“left”
的例子,因此一点直觉和经验告诉我
xanchor=“right”
会起作用。@Brunox13那么我的建议对你有何作用呢?这个解决方案对我来说非常有效-多么敏锐的观察!在我接受答案之前,我希望能得到更多的解释,解释为什么这对其他发现这个问题的人有效,因为即使在我看过文档之后(在发布我的问题之前),我也不会马上意识到这是解决我问题的合适参数。@Brunox13有时,情节的某些方面既不直观也不透明。但是使用这个库已经有相当一段时间了,我已经体验到开发人员几乎想到了任何东西。所以你认为有些东西应该起作用,它几乎总是起作用。所以去寻找,你就会发现。如果你不这样做,那么我们会有越来越多的人来帮助你。别忘了这也太棒了!
import plotly.graph_objects as go

fig = go.Figure()

fig.add_annotation(ax = 3, axref = 'x', ay = 2, ayref = 'y',
                   x = 4, xref = 'x', y = 2, yref = 'y',
                   arrowhead = 3,
                   xanchor = 'right')

fig.add_shape(x0 = 1, x1 = 3, xref = 'x',
              y0 = 1, y1 = 3, yref = 'y')

fig.add_shape(x0 = 4, x1 = 6, xref = 'x',
              y0 = 1, y1 = 3, yref = 'y')

fig.update_layout(xaxis_range = [0, 7], yaxis_range = [0, 4])

fig.show()