Illustration 3D d'une matrice

sciPYTH -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je dispose d'une matrice de données expérimentales telles que la première colonne représente les X, la première ligne les Y et l'intérieur de la matrice les Z :

     y1     y2     y3     y4
x1 z1,1 z1,2 ... ...
x2 z2,1 z2,2
x3
x4


Savez vous comment représenter sur un graph 3D ce type de données?

Merci

2 réponses

  1. urilou777 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   44
     
    non mais je sais qu'il y a des logiciels comme SCILAB ou MATLAB (et dans une moindre mesure XCAS) qui permettent sûrement d'arriver à tes fins. Plus qu'à trouver un tutoriel
    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Bonjour,

    Généralement on utilise plutôt une heat map, qu'on obtient par exemple à l'aide
    matplotlib.pyplot.matshow


    Exemple :

    import matplotlib.pyplot
    matplotlib.pyplot.matshow([[1, 2], [2, 4]])


    Il existe aussi des affichages en 3D, voir par exemple
    ax.scatter3D
    mais ce genre de graphiques sont généralement peu exploitables. Ce layout attend une séries de points 3D présentés sous la forme de trois vecteurs, correspondant respectivement aux coordonnées x, y, et z.

    Pour convertir ta matrice sous ce format, tu peux faire ainsi :

    import matplotlib.pyplot as plt
    
    a = [[1, 2], [2, 4]] # Must be a square matrix
    m = len(a)
    x, y, z = map(
        list,
        zip(
            *(
                (i, j, a[i][j])
                for i in range(m)
                for j in range(m)
            )
        )
    )
    print(x, y, z) # [0, 0, 1, 1], [0, 1, 0, 1], [1, 2, 3, 4]
    fig = plt.figure()
    ax = plt.axes(projection='3d')
    ax.scatter3D(x, y, z)


    Bonne chance
    0