Я могу прочитать файл формы, используя geo pandas, но я хочу раскрасить разные города разными цветами одного штата. Как я могу раскрасить разные цвета в разные города одного штата? Спасибо.
import geopandas as gpd
gf_states = gpd.read_file('IND_adm2.shp')
gr_states.head()
ID_0 ISO NAME_0 ID_1 NAME_1 ID_2 NAME_2 TYPE_2 ENGTYPE_2 NL_NAME_2 VARNAME_2 geometry
0 105 IND India 1 Andaman and Nicobar 1 Andaman Islands District District None None MULTIPOLYGON (((93.64841 14.93487, 93.64917 14...
1 105 IND India 1 Andaman and Nicobar 2 Nicobar Islands District District None None MULTIPOLYGON (((92.78778 9.24417, 92.78889 9.2...
2 105 IND India 2 Andhra Pradesh 3 Anantapur District District None Anantpur, Ananthapur POLYGON ((77.69000 15.17628, 77.69378 15.17347...
3 105 IND India 2 Andhra Pradesh 4 Chittoor District District None Chitoor|Chittor POLYGON ((78.47611 13.93680, 78.48208 13.93007...
4 105 IND India 2 Andhra Pradesh 5 Cuddapah District District None None POLYGON ((78.94612 15.19465, 78.95062 15.18535...
Здесь предположим, что я хочу покрасить NAME_2 (Анантапур с красным цветом, читтор с синим цветом и cuddapah с желтым цветом и т. Д. Из одного штата NAME_1 Андхра Прад sh) , Как я могу это сделать? Спасибо. Код, над которым я работаю, ниже: -
def fig_beauty_hires(ax,xlim=[66,78],ylim=[20,24],st_name,states=False,states_name=False):
import cartopy as crs
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
import geopandas as gpd
gf_states = gpd.read_file('IND_adm2.shp')
gdff = gf_states.loc[gf_states['NAME_1']==st_name,['geometry','NAME_2']]
if states_name:
gf_new = gdff.cx[xlim[0]:xlim[1],ylim[0]:ylim[1]]
state_points = gf_new.geometry.apply(lambda x :x.representative_point().coords[:])
state_coords = [point[0] for point in state_points]
cMap = ['#00FF00','#FFFF00','#00FFFF','#FF00FF','#FF4500','#7B68EE','#ADFF2F']
for name, coord , col,j in zip(gf_new.NAME_2,state_coords,cMap,range(0,len(cMap))):
#print(name)
#ax.add_geometries(gdff.geometry,crs=ccrs.PlateCarree(),color=cMap[j],edgecolor='k')
if name=="Nashik" or name=="Aurangabad"or name=="Jalna" or name=="Osmanabad"or name=="Gadag"or name=="Bellary"or name=="Mysore" or name=="Davanagere" or name=="Hassan" or name=="Greater Bombay"or name=="Thiruvananthapuram"or name=="Alappuzha" or name=="Kollam" or name=="Pattanamtitta" or name=="Idukki" or name=="Palakkad":
print("if j:",str(cMap[j]))
ax.add_geometries(gdff.geometry,crs=ccrs.PlateCarree(),facecolor=cMap[j],edgecolor='k')
ax.text(x=coord[0],y=coord[1],s=" ",horizontalalignment='center',fontweight='normal',fontsize=10,color='k')
else:
print("else j:",str(cMap[j]))
ax.add_geometries(gdff.geometry,crs=ccrs.PlateCarree(),facecolor=cMap[j],edgecolor='k')
ax.text(x=coord[0],y=coord[1],s=name,horizontalalignment='center',fontweight='bold',fontsize=10,color='k')
if __name__=="__main__":
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
fig, ax = plt.subplots(figsize=(19.20,10.80), subplot_kw={'projection': ccrs.PlateCarree()})
fig_beauty_hires(ax=ax)