Если вы посмотрите на traceorder , вы увидите, что элементы отображаются сверху вниз в том же порядке, что и входные данные для опции "normal"
. Таким образом, вы можете просто изменить порядок ваших входных данных, чтобы получить то, что вы хотите:
И если вы хотите указать произвольный порядок, Вы можете сделать это, определив порядок во входных данных. Задание порядка row может быть немного утомительным, поэтому я часто перемещаю фрейм данных, упорядочиваю категории, которые теперь появляются в столбце, и транспонирую его обратно в исходную форму:
order = ['till 500', '501-600', '601-1000', 'more 1001']
df_ordered = df.T[order].T
При таком порядке результат будет таким же, как на рисунке выше. Вот обновленный фрагмент кода:
Полный код:
import plotly.express as px
import pandas as pd
rows=[['501-600','65','122.58333','45.36667'],
['till 500','54','12.5','27.5'],
['more 1001','51','-115.53333','38.08'],
['601-1000','54','120.54167','21.98'],
]
colmns=['bins','data','longitude','latitude']
df=pd.DataFrame(data=rows, columns=colmns)
fig=px.scatter_geo(df,lon='longitude', lat='latitude',color='bins',
opacity=0.5,
projection="natural earth")
fig.show()
order = ['till 500', '501-600', '601-1000', 'more 1001']
df = df.set_index('bins')
df_ordered = df.T[order].T.reset_index()
df_ordered
fig2=px.scatter_geo(df_ordered,lon='longitude', lat='latitude',color='bins',
opacity=0.5,
projection="natural earth")
fig2.show()