Histogramme Dictionnaire

Sun -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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.

2 réponses

  1. Sun
     
    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