<p>没有罗布·雷蒙德的回答那么整洁,但我就是这么做的。如果我是你,我会用罗布的</p>
<pre><code>popCodes['PGR'] = popCodes['PGR'].astype(float)
# Use this to bin the data and apply discrete colour codes later
conditions = [
(popCodes['PGR'] >= -50) & (popCodes['PGR'] <0),
(popCodes['PGR'] >= 0) & (popCodes['PGR'] <50),
(popCodes['PGR'] >= 50) & (popCodes['PGR'] <100),
(popCodes['PGR'] >= 100) & (popCodes['PGR'] <150),
(popCodes['PGR'] >= 150) & (popCodes['PGR'] <200),
(popCodes['PGR'] >= 200) & (popCodes['PGR'] <250),
(popCodes['PGR'] >= 250) & (popCodes['PGR'] <300),
(popCodes['PGR'] >= 300) & (popCodes['PGR'] <350),
(popCodes['PGR'] >= 350) & (popCodes['PGR'] <400),
(popCodes['PGR'] >= 400) & (popCodes['PGR'] <450),
(popCodes['PGR'] >= 450) & (popCodes['PGR'] <500)
]
values = ['[−50,0)', '[0,50)', '[50,100)', '[100,150)', '[150,200)',
'[150,200)', '[250,300)', '[300,350)', '[350,400)', '[400,450)', '[450,500)']
popCodes['range'] = np.select(conditions, values)
popCodes['PGR'] = popCodes['PGR'].astype(str) # converting PGR to string gets plotly express to use discrete colours apparently
popCodes = popCodes.sort_values('range') # sorts the dataframe by the range so I get a better legend later
fig = px.choropleth(popCodes, locations= popCodes["Code"],
color = popCodes["range"], # PGR calculated from dataframer
hover_name = popCodes["PGR"], # column to add to hover information
color_discrete_map={"[−50,0)": "maroon", # discrete colours based on the range of PGR from above
'[0,50)':'red',
'[50,100)':'orange',
'[100,150)':'yellow',
'[150,200)':'lime',
'[200,250)':'green',
'[250,300)':'aqua',
'[300,350)':'teal',
'[350,400)':'blue',
'[400,450)':'navy',
'[450,500)':'purple'
}
)
fig.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/msyel.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/msyel.png" alt="enter image description here"/></a></p>