Dmi*_*try 3 python legend-properties 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()
Run Code Online (Sandbox Code Playgroud)
如果我只有一条数据痕迹,是否有可能在图例标签中自定义顺序?
因为现在图例中的标签如下所示:
501-600
till 500
more 1001
601-1000
Run Code Online (Sandbox Code Playgroud)
我需要让它们看起来像这样:
till 500
501-600
601-1000
more 1001
Run Code Online (Sandbox Code Playgroud)
If you take a look at traceorder you'll see that items are displayed top-to-bottom in the same order as the input data for the "normal" option. So you can just change the order of your input data to get what you want:
And if you'd like to specify an arbitrary order, you can do so by defining the order in the input data. Specifying row order can ba a bit tedious, so I often transpose the dataframe, order the categories that now appear in the column, and transpose it right back to its original form:
order = ['till 500', '501-600', '601-1000', 'more 1001']
df_ordered = df.T[order].T
Run Code Online (Sandbox Code Playgroud)
With this order, the result will be the same as the figure above. Here's an updated code snippet:
Complete code:
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()
Run Code Online (Sandbox Code Playgroud)