[我在plotly中用Python制作了scatter_geo图。
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()
如果我只有一条数据迹,是否有可能在图例标签中进行自定义顺序?
Coz现在图例中的标签看起来像这样:
501-600
till 500
more 1001
601-1000
但我需要使它们看起来像这样:
till 500
501-600
601-1000
more 1001
[如果您查看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()