39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
|
import matplotlib.pyplot as plt
|
||
|
import datetime
|
||
|
# url = "https://www.data.gouv.fr/fr/datasets/r/7eee8f09-5d1b-4f48-a304-5e99e8da1e26"
|
||
|
import pandas_geojson as pdg
|
||
|
import numpy as np
|
||
|
from pandas import DataFrame
|
||
|
from pandas_geojson import GeoJSON
|
||
|
import re
|
||
|
|
||
|
geojson: GeoJSON = pdg.read_geojson('small.geojson')
|
||
|
gdf: DataFrame = geojson.to_dataframe()
|
||
|
operators: int = gdf['properties.nom_amenageur'].value_counts()
|
||
|
# Calculer les hauteurs des barres et les étiquettes
|
||
|
height = np.zeros(len(gdf))
|
||
|
labels = []
|
||
|
for i, operator in enumerate(operators):
|
||
|
height[i] = gdf[gdf['nom_operateur'] == operator]['properties.nom_amenageur'].size
|
||
|
labels.append(operator)
|
||
|
|
||
|
# Créer le graphique
|
||
|
fig, ax = plt.subplots()
|
||
|
ax.bar(range(len(height)), height)
|
||
|
ax.set_xlabel('Index de l\'opérateur')
|
||
|
ax.set_ylabel('Nombre de lignes')
|
||
|
ax.set_xticks(range(len(height)))
|
||
|
ax.set_xticklabels(labels)
|
||
|
ax.spines['right'].set_visible(False)
|
||
|
ax.spines['top'].set_visible(False)
|
||
|
ax.tick_params(axis='both', length=0)
|
||
|
|
||
|
# Ajouter la date au graphique
|
||
|
current_datetime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||
|
plt.suptitle(f"Distribution du nombre de lignes par opérateur - Date : {current_datetime}")
|
||
|
|
||
|
# Afficher le graphique
|
||
|
plt.show()
|
||
|
|
||
|
# Sauvegarder le graphique en tant que fichier JPG
|
||
|
plt.savefig("distribution_par_operateur.jpg")
|