Einfache Choroplethenkarte
Wie diese Karte zustande kam wird hier erklärt: einfache Karte mit geopandas.
Wenn Ihr Geopandas-Frame saubere Daten hat, dann ist eine Choroplethen-Karte auch sehr einfach:
import geopandas import matplotlib.pyplot as plt from shapely.geometry import Point # Read the shapefile and related data gdf = geopandas.read_file( "swissBOUNDARIES3D_1_3_TLM_KANTONSGEBIET.shp" ) # Necessary because some areas do not have EINWOHNERZ or KANTONSFLA temp = gdf[["KANTONSNUM","EINWOHNERZ","KANTONSFLA"]].copy() temp["density"] = temp["EINWOHNERZ"] / temp["KANTONSFLA"] temp.dropna( inplace=True ) temp.drop( ["EINWOHNERZ","KANTONSFLA"], axis=1, inplace=True ) gdf = gdf.join( temp.set_index("KANTONSNUM"), on="KANTONSNUM" ) # Plot the map ax = gdf.plot( column="density" ) # Definitions for the cities cities = geopandas.GeoDataFrame( { "name": ["Regensdorf", "Bern", "Basel", "Brig", "Zürich"], "position": [Point(2677911.365,1254622.585),Point(2599859.275,1199633.166), Point(2611328.186,1267660.365),Point(2642300.939,1129536.286), Point(2682771.071,1247998.554)], "tx": [2677849,2599858,2617802,2640000,2685000], "ty": [1259315,1190000,1257500,1120000,1236000] }, geometry="position" ) ; # Plot the points cities.plot( ax=ax, color="red", markersize=5 ) # Name the points cities.apply( lambda r: ax.annotate(r[0],xy=(r[2],r[3]),color="white",horizontalalignment="center"), axis=1 ) # Remove axes and margins ax.margins( 0 ) plt.axis( "off" ) # Save plot as SVG plt.savefig( "gpchoro.svg", bbox_inches="tight", pad_inches=0.1 )
Die Daten von Swisstopo sind nicht vollständig, für einige Gebiete gibt es keine Angaben zu EINWOHNERZ und KANTONSFLA. Weil alle Gebiete die zu einem Kanton gehören mit der gleichen KANTONSNUM ausgezeichnet sind, kann man das mit etwas Data-Wrangling ergänzen.
Die Verteilung der Bevölkerungsdichte ist sehr unterschiedlich, mit Basel als Ausreisser. Das führt dazu dass die meisten Kantone einen sehr ähnlichen Farbton haben.
Aber keine Angst, Geopandas bietet auch dafür eine Lösung: finale Cororplethenkarte mit Geopandas