web-dev-qa-db-fra.com

Tracé 3D à partir de X, Y, Z, Excel ou d'autres outils

J'ai des données qui ressemblent à ceci:

1000    13  75.2
1000    21  79.21
1000    29  80.02
5000    29  87.9
5000    37  88.54
5000    45  88.56
10000   29  90.11
10000   37  90.79
10000   45  90.87

Je souhaite utiliser la première colonne en tant qu'étiquettes d'axe x, la deuxième colonne en tant qu'étiquettes d'axe y et la troisième colonne en tant que valeurs z. Je veux afficher une surface de cette manière. Quelle est la meilleure façon de procéder? J'ai essayé Excel mais je n'ai pas vraiment abouti. Quelqu'un a-t-il des suggestions pour un outil permettant de faire cela? Est-ce que quelqu'un sait comment faire cela dans Excel?

Merci

13
David Williams

J'ai fini par utiliser matplotlib :)

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
x = [1000,1000,1000,1000,1000,5000,5000,5000,5000,5000,10000,10000,10000,10000,10000]
y = [13,21,29,37,45,13,21,29,37,45,13,21,29,37,45]
z = [75.2,79.21,80.02,81.2,81.62,84.79,87.38,87.9,88.54,88.56,88.34,89.66,90.11,90.79,90.87]
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.2)
plt.show()

Les résultats étaient doux

13
David Williams

Vous ne pouvez vraiment pas afficher 3 colonnes de données en tant que «surface». Si vous n’avez qu’une colonne de données «Z», vous obtiendrez une ligne dans un espace à 3 dimensions et non une surface (ou, dans le cas de vos données, trois lignes distinctes). Pour que Excel puisse utiliser ces données, celles-ci doivent être formatées comme indiqué ci-dessous:

      13    21   29      37    45   
1000  75.2                              
1000       79.21                            
1000             80.02                      
5000             87.9                   
5000                    88.54               
5000                           88.56            
10000            90.11      
10000                   90.79   
10000                          90.87

Ensuite, pour obtenir une surface réelle, vous devez renseigner toutes les cellules manquantes avec les valeurs Z appropriées. Si vous n'en avez pas, vous feriez mieux de l'afficher sous forme de 3 lignes 2D distinctes, car il n'y a pas assez de données pour une surface.

La meilleure représentation 3D qu'Excel vous donnera des données ci-dessus est assez déroutante:

enter image description here

Représenter cet ensemble de données limité sous forme de données 2D peut constituer un meilleur choix:

enter image description here

Pour rappel, ces types de questions s’affichent généralement un peu mieux sur superuser.com .

10
Stewbob

Vous pouvez utiliser les bibliothèques r pour le traçage 3D. 

Les étapes sont les suivantes:

Commencez par créer un cadre de données à l’aide de la commande data.frame ().

Créez un tracé 3D à l'aide de la bibliothèque scatterplot3D.

Ou vous pouvez également faire pivoter votre graphique en utilisant la bibliothèque rgl avec la commande plot3d ().

Alternativement, vous pouvez utiliser la commande plot3d () de la bibliothèque rcmdr.

Dans MATLAB, vous pouvez utiliser les commandes surf (), mesh () ou surfl () selon vos besoins. 

[ http://in.mathworks.com/help/matlab/examples/creating-3-d-plots.html]

0
Dr Nisha Arora

Vous pouvez également utiliser Gnuplot qui est également disponible à partir de gretl. Placez vos données x et z sur un fichier texte et insérez ce qui suit

splot 'test.txt' using 1:2:3 with points palette pointsize 3 pointtype 7

Ensuite, vous pouvez définir des étiquettes, etc. en utilisant 

set xlabel "xxx" rotate parallel
set ylabel "yyy" rotate parallel
set zlabel "zzz" rotate parallel
set grid
show grid
unset key
0
Robert