Dessinez une carte colorée au niveau de la ville comme celle ci-dessous avec Python Pour le niveau préfectoral, allez sur ici
Au début, je pensais utiliser geopandas + geoplot, mais je ne pouvais pas bien installer geoplot avec Google Colab, j'ai donc abandonné Geoplot et commis diverses erreurs pour arriver à la méthode la plus simple. Fondamentalement, ce n'est pas grave si les géopandas peuvent être installés en plus.
À propos, la couleur de chaque couleur est basée sur la valeur du nombre aléatoire cette fois, veuillez donc modifier les données le cas échéant.
Il y a une [Liste de codes](# Liste de codes) à la fin de la page.
Utilisez une bibliothèque appelée geopandas pour créer des cartes colorées
pip install geopandas
Préparation d'autres bibliothèques
import numpy as np
import geopandas as gpd
import random
import matplotlib.colors
import matplotlib.pyplot as plt
Téléchargez les données de forme (polygone) de la ville, du quartier, de la ville et du village à partir du "National land numerical information download service" et utilisez le logiciel d'édition approprié (QGIS, etc.) ) Pour effectuer un prétraitement.
Comme indiqué ci-dessous, il est nécessaire de combiner des données constituées de plusieurs polygones en un seul, même s'ils se trouvent dans la même ville, quartier, ville et village. Simplifiez également, si nécessaire, les polygones.
Lorsque vous utilisez QGIS, veuillez consulter ici.
Exportez les données prétraitées au format geojson et chargez-les avec des géopandas Je veux que vous changiez le répertoire des fichiers comme il convient.
filename = "/content/drive/My Drive/Colab Notebooks/pref47.geojson"
df = gpd.read_file(filename, encoding='SHIFT-JIS')
Ajoutez également les données utilisées pour la coloration à la trame de données au format geopandas ici. L'utilisation est la même que celle des pandas, c'est donc facile à comprendre. Cette fois, par souci de simplicité, une valeur aléatoire est utilisée, mais on suppose que des données telles que la population et les salaires seront saisies ici.
df["target"] = [random.random() for i in range(df.shape[0])]
Définissez une fonction qui détermine la couleur à peindre à partir des données de chaque ville, quartier, ville et village.
def colors_scale(arr):
n_min = min(arr)
n_max = max(arr)
cmap = plt.cm.rainbow
norm = matplotlib.colors.Normalize(vmin=n_min, vmax=n_max)
arr = [cmap(norm(r)) for r in arr]
return arr, cmap, norm
Enfin un tracé de carte De la même manière que les pandas, seules les données d'intérêt sont sélectionnées et utilisées comme mini_df. Le but est de passer une liste d'informations de couleur avec color = lors de l'exécution de df.plot
mini_df = df[df["N03_001"].isin(["Préfecture d'Ehime", "Préfecture de Tokushima", "Préfecture de Kagawa", "Préfecture de Kochi"])]
num_color, cmap, norm = colors_scale(mini_df["num"])
mini_df.plot(color=num_color, figsize=(10,6))
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
plt.colorbar(sm)
plt.show()
c'est tout!
pip install geopandas
import numpy as np
import geopandas as gpd
import random
import matplotlib.colors
import matplotlib.pyplot as plt
filename = "/content/drive/My Drive/Colab Notebooks/pref47.geojson"
df = gpd.read_file(filename, encoding='SHIFT-JIS')
df["target"] = [random.random() for i in range(df.shape[0])]
def colors_scale(arr):
n_min = min(arr)
n_max = max(arr)
cmap = plt.cm.rainbow
norm = matplotlib.colors.Normalize(vmin=n_min, vmax=n_max)
arr = [cmap(norm(r)) for r in arr]
return arr, cmap, norm
mini_df = df[df["N03_001"].isin(["Préfecture d'Ehime", "Préfecture de Tokushima", "Préfecture de Kagawa", "Préfecture de Kochi"])]
num_color, cmap, norm = colors_scale(mini_df["num"])
mini_df.plot(color=num_color, figsize=(10,6))
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
plt.colorbar(sm)
plt.show()
Service national de téléchargement d'informations numériques sur les terres 09. Combinez plusieurs fonctionnalités en une seule fonctionnalité Lire et dessiner des fichiers de formes et geojson à l'aide de python
Recommended Posts