如何在 matplotlib 中为轮廓选择单独的颜色

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

在下面的简短 Python 代码中,我根据 csv 文件中的值并使用 shapefile 绘制风险级别。该代码有效,但我想为每个级别选择特定的单独颜色,即绿色、黄色、橙色和红色。 目前,如果我将“蓝色”或“红色”放入附件的 png 中,它就可以工作。[image output1。 代码中的那行

merged_df.plot(column="risk",colors = ['green','yellow','cyan','red'])

不起作用。 如何指定个别特定颜色。帮助将不胜感激。 “Tmaxrisks.csv”中的风险数据如下

"District","risk"
"Berea",1
"Butha Buthe",3
"Leribe",1
"Mafeteng",2
"Maseru",1
"Mohale's Hoek",2
"Mokhotlong",4
"Qacha's Nek",3
"Quthing",3
"Thaba Tseka",4


import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt

map_df = gpd.read_file("Shapefiles/BNDA_LSO_1990-01-01_lastupdate/BNDA_LSO_1990-01-01_lastupdate.shx")

risks_df = pd.read_csv("Tmaxrisks.csv")

merged_df = map_df.merge(risks_df, left_on=["adm1nm"], right_on=["District"])

merged_df.plot(column="risk", cmap="Reds", legend=False)
#merged_df.plot(column="risk",colors = ['green','yellow','cyan','red'])

plt.show()
python matplotlib
1个回答
0
投票

您可以

map
将每个adm1nm的分区,然后将风险改为颜色,然后将其传递给
plot

d = {1: "green", 2: "yellow", 3: "cyan", 4: "red"}

# in your code, change `adm1_name` to `adm1nm`
colors = map_df["adm1_name"].map(risks_df.set_index("District")["risk"].map(d))

ax = map_df.plot(color=colors, edgecolor="k", alpha=0.7)

情节(显示风险):

使用的输入(

map_df
):

url = (
    "https://datacatalogfiles.worldbank.org/"
    "ddh-published/0041454/DR0051760/lsobndadmin1wfpco.geojson?"
    "versionId=2023-01-19T03:44:59.0042238Z"
)

map_df = gpd.read_file(url)
© www.soinside.com 2019 - 2024. All rights reserved.