在 Plotly 中向分类 X 轴添加注释

问题描述 投票:0回答:1

在plotly.express和plotly graph_objects中工作,我试图添加箭头来表示从一个数据点到另一个数据点的移动。两个点共享一个分类 x 轴(序列号)。

import pandas as pd
import plotly.express as px
import plotly.graph_objects as po

df = pd.DataFrame([['1600',255,110],['1832',235,92],['1732',210,200]])
df.columns = ['SN','MetA','MetB']
df = df.sort_values('SN')
df.reset_index(drop = True,inplace = True)
scat = px.scatter(df, x = 'SN', y = ['MetA','MetB'])

list_of_all_arrows = []

for i in df.index:
    arrow = go.layout.Annotation(dict(
                    x=i
                    y=df.loc[i,'MetA']
                    xref="x", yref="y",
                    text="",
                    showarrow=True,
                    axref="x", ayref='y',
                    ax=i
                    ay=df.loc[i,'MetB'],
                    arrowhead=3,
                    arrowwidth=1.5,
                    arrowcolor='rgb(255,51,0)',)
                )
    list_of_all_arrows.append(arrow) 

scat.update_layout(annotations = list_of_all_arrows)

pio.show(scat)

所以这有效并创建了下面的图片,正如我所期望的那样 带注释的箭头工作正常

但是,当在更大的数据集上运行相同的代码时,会发生这种情况: 未对齐的箭头

有什么想法吗?我必须在 X 轴上绘制为字符串。

python plotly
1个回答
0
投票

我自己想出来的

显然,plotly 不能保证 x 轴上分类数据的顺序(看起来很愚蠢,但w/e)

scat.update_xaxes(categoryorder = 'category ascending')
© www.soinside.com 2019 - 2024. All rights reserved.