Histogramme Dictionnaire

Fermé
Sun - 10 mars 2021 à 14:26
yg_be Messages postés 23473 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 février 2025 - 10 mars 2021 à 23:15
Bonjour,

Je souhaiterais savoir comment plot un dictionnaire. J'ai vu énormément de Forum sur cette question mais qui traitait d'une valeur dans une clé d'un dictionnaire. Pour illustrer voici un exemple de script:

D ={1:[300, 345,350], 2:[400, 299],... 13:{[450, 500,350,400]# ces valeurs sont inventées pour aller plus vite car les matrices sont grandes

plt.bar(D.keys(), D.values(), width, color='b'')
plt.xlabel('Classes')
plt.ylabel('Températures de surface (en K)')
plt.title('Distribution des classes de températures de surface en Kelvin par moyenne')

Je sais que je ne suis pas loin.. Il me suffit d'un petit coup de pouce svp!

Merciii, cordialement.
A voir également:

2 réponses

yg_be Messages postés 23473 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 février 2025 Ambassadeur 1 568
10 mars 2021 à 18:31
bonjour,
es-tu certain d'avoir partagé tout ton programme?
merci d'utiliser les balises: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
classif = 'chemin d'accès'
ds = gdal.Open(classif)
cols = ds.RasterXSize
rows = ds.RasterYSize
band= ds.RasterCount
db = ds.GetRasterBand(1)
bandtype = gdal.GetDataTypeName(db.DataType)
classif = db.ReadAsArray(0, 0, cols, rows).astype(np.int)

Ts_jour= 'chemin d'accès'
ds2 = gdal.Open(Ts_jour)
cols2 = ds2.RasterXSize
rows2 = ds2.RasterYSize
band2= ds2.RasterCount
db2 = ds2.GetRasterBand(1)
bandtype2 = gdal.GetDataTypeName(db2.DataType)
Ts_jour = db2.ReadAsArray(0, 0, cols2, rows2).astype(np.int)

##Attribuer indices de classif à Ts
vecteur_Ts_classe={}
for x in range(1,14):
[cols,rows] = np.where(classif==x) #chercher dans la matrice de classif par exemple classe 1 et l'implémenter dans un vecteur
vecteur_Ts_classe[x] = Ts_jour[cols,rows] #on assigne le vecteur à une matrice où il y a les températures

- Le dictionnaire est sous cette forme : {1: array([300, 300, 300, ..., 299, 299, 299]), 2: array([310, 306, 310, ..., 314, 311, 311]), 3: array([303, 303, 303, ..., 307, 307, 310]), 4: array([307, 307, 308, ..., 311, 310, 308]), 5: array([323, 323, 323, ..., 328, 330, 331]), 6: array([313, 311, 309, ..., 318, 322, 318]), 7: array([320, 316, 315, ..., 323, 324, 323]), 8: array([312, 312, 312, ..., 320, 313, 315]), 9: array([314, 314, 316, ..., 330, 330, 331]), 10: array([313, 313, 316, ..., 313, 314, 314]), 11: array([316, 316, 311, ..., 322, 320, 319]), 12: array([311, 309, 319, ..., 320, 324, 321]), 13: array([302, 302, 303, ..., 304, 303, 303])}

#Histogramme
plt.bar(list(vecteur_Ts_classe()), vecteur_Ts_classe.values(), align ='center')
plt.xticks(list(vecteur_Ts_classe()), vecteur_Ts_classe.keys())
plt.margins(0.05,0)
plt.show()

- Mon message d'erreur : ValueError: setting an array element with a sequence.
- Je souhaite réaliser un histogramme des valeurs (300,300 etc..) en fonction de leur classe 1,2,3,4 etc... Est-ce envisageable ?
- Mes classes ne sont pas de même longueur cad que pour la classe 1 j'ai 5000 valeurs par exemple et la classe 2 j'en ai 3000 valeurs
0
yg_be Messages postés 23473 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 février 2025 1 568
10 mars 2021 à 23:15
merci d'utiliser les balises: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

et, ensuite, de préciser à quelle ligne tu obtiens le message d'erreur
0