/ / remplissez chaque code postal avec une couleur différente pour le fond de carte de Matplotlib en Python 3.2 - python, matplotlib, fichier de formes, python-3.2, matplotlib-basemap

remplissez chaque code postal avec une couleur différente pour le fond de carte de Matplotlib en Python 3.2 - python, matplotlib, fichier de formes, python-3.2, matplotlib-basemap

Je travaille sur la coloration du polygone de code postal dans un fond de carte de Matplotlib en Python 3.2.

Je dois remplir chaque code postal avec une couleur différente.

Les informations de code postal proviennent du fichier de formes.

Je ne trouve pas de solutions à: http://matplotlib.org/basemap/api/basemap_api.html

Toute aide serait appréciée.

Merci

Réponses:

1 pour la réponse № 1

Basemap est un moyen très pratique de lire dans un fichier de formes.

m = Basemap()
m.readshapefile("file_without_extension", "name")

Vous pouvez ensuite accéder aux informations sur le fichier de formes avec m.name et m.name_info.

Créez ensuite le cadre de données que vous souhaitez utiliser pour les informations de couleur.

import pandas as pd
import numpy as np
from matplotlib.patches import Polygon

zipdf = pd.DataFrame({"shapes": [Polygon(np.array(shape), True) for shape in m.name],
"zip": [area["zip"] for area in m.name_info]})

Si vous souhaitez inclure des informations de coloration non incluses dans le fichier de formes, fusionnez ces autres informations avec le DataFrame que vous venez de créer.

zipdf = zipdf.merge(other_df, how="right", on="zip")

Maintenant, pour colorier la carte, j’ai utilisé une palette de couleurs qui prend les valeurs de prix de location dans le code postal, je vais donc vous le montrer.

from matplotlib.collections import PatchCollection
import matplotlib.cm as cm
import matplotlib.colors as colors

fig = plt.figure()
ax = fig.add_subplot(111)

cmap = plt.get_cmap("viridis")
pc = PatchCollection(zipdf["shapes"], zorder=2)
norm = colors.Normalize()

pc.set_facecolor(cmap(norm(zipdf["price"].values)))
ax.add_collection(pc)

cmapper = cm.ScalarMappable(norm=norm, cmap=cmap)
cmapper.set_array(zipdf["price"])
plt.colorbar(cmapper)

plt.show()

Pour un peu plus à ce sujet, consultez http://www.datadependence.com/2016/06/creating-map-visualisations-in-python/.

Faites-moi savoir si j'ai oublié quelque chose!