2013-04-08 16 views
11

Ho dati che assomiglia a questo:3D Tracciare da X, Y, Z dati, Excel o altri strumenti di

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 

voglio usare la prima colonna come asse x etichette, la seconda colonna come asse y etichette e la terza colonna come valori z. Voglio mostrare una superficie in questo modo. Qual è il modo migliore per farlo? Ho provato Excel ma non sono riuscito a ottenere nulla. Qualcuno ha qualche suggerimento per uno strumento per fare questo? Qualcuno sa come farlo in Excel?

Grazie

risposta

11

ho finito per usare 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() 

I risultati sono stati sweet

9

Davvero non si può visualizzare 3 colonne di dati come una 'superficie'. Solo una colonna di dati 'Z' ti darà una linea nello spazio tridimensionale, non in una superficie (o nel caso dei tuoi dati, 3 linee separate). Per Excel per essere in grado di lavorare con questi dati, deve essere formattato come illustrato di seguito:

 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 

Poi, per ottenere una superficie reale, si avrebbe bisogno di compilare in tutte le cellule mancanti con la Z appropriata valori. Se non ne hai, quindi è meglio mostrarlo come 3 linee 2D separate, perché non ci sono abbastanza dati per una superficie.

la migliore rappresentazione in 3D che Excel vi darà dei dati sopra è piuttosto confusa:

enter image description here

Rappresentare questo set di dati limitata come dati 2D potrebbe essere una scelta migliore:

enter image description here

Come nota per riferimento futuro, questi tipi di domande solitamente vanno leggermente meglio su superuser.com.

+0

Ultima grafico sembra freddo. Grazie per il testa a testa su superuser. –

+0

vedi risposta sotto. –

-1

Perché non unire le righe che contengono gli stessi valori? -

  13 21 29  37 45 
  • 1000] -75,2 - 79.21 - 80,02

  • 5000] --------------------- 87,9 --- 88.54 ---- 88,56

  • 10000] ------------------- 90.11--90.97 ---- 90,87

Excel può usarlo abbastanza bene ..

0

È possibile utilizzare librerie r per il tracciamento 3 D.

I passaggi sono:

Innanzitutto creare un frame di dati utilizzando data.frame di comando().

Creare un grafico 3D utilizzando la libreria scatterplot3D.

Oppure È anche possibile ruotare il grafico utilizzando la libreria di rgl dal comando plot3d().

In alternativa è possibile utilizzare il comando plot3d() dalla libreria rcmdr.

In MATLAB, è possibile utilizzare il comando surf(), mesh() o surfl() secondo le proprie esigenze.

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

0

È inoltre possibile utilizzare Gnuplot che è disponibile da gretl anche. Metti i tuoi dati x y z su un file di testo un inserto il seguente

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

Quindi è possibile impostare le etichette, ecc utilizzando

set xlabel "xxx" rotate parallel 
set ylabel "yyy" rotate parallel 
set zlabel "zzz" rotate parallel 
set grid 
show grid 
unset key 
Problemi correlati