2013-04-08 4 views
11

mam dane, które wygląda tak:3D Rysowanie z X, Y, Z danych, Excel lub innych narzędzi

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 

chcę użyć pierwszej kolumny jako oś x etykiet, w drugiej kolumnie jako oś y etykiety i trzecią kolumnę jako wartości z. Chcę wyświetlić powierzchnię w ten sposób. Jaki jest najlepszy sposób na zrobienie tego? Próbowałem Excela, ale nigdzie go nie dostałem. Czy ktoś ma jakieś sugestie dotyczące narzędzia do tego? Czy ktoś wie, jak to zrobić w programie Excel?

Dzięki

Odpowiedz

11

skończyło się używając 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() 

Wyniki były sweet

9

Naprawdę nie można wyświetlić 3 kolumny danych jako „powierzchni”. Tylko posiadanie jednej kolumny danych "Z" da ci linię w przestrzeni trójwymiarowej, a nie powierzchni (lub w przypadku danych, 3 oddzielne linie). Dla Excel, aby móc pracować z tymi danymi, to musi być sformatowany jak pokazano poniżej:

 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 

Następnie, aby uzyskać rzeczywistą powierzchnię, trzeba by wypełnić wszystkie brakujące komórki z odpowiednim Z- wartości. Jeśli ich nie masz, lepiej pokazać to jako 3 oddzielne linie 2D, ponieważ nie ma wystarczającej ilości danych dla powierzchni.

Najlepszym 3D reprezentacja że Excel dadzą wam powyższych danych jest dość mylące:

enter image description here

reprezentująca ten ograniczony zestaw danych jako danych 2D może być lepszym wyborem:

enter image description here

Jako uwagi na przyszły użytek, tego typu pytania zwykle są nieco lepsze od superuser.com.

+0

Ostatni wykres wygląda cool. Dzięki za wzgląd na superużytkownika. –

+0

patrz odpowiedź poniżej. –

-1

Dlaczego nie łączyć wiersze, które zawierają te same wartości? -

  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

Program Excel może używać tego całkiem dobrze ..

0

Możesz użyć bibliotek r dla 3 D kreślenia.

Kroki są następujące:

najpierw tworzyć ramkę danych za pomocą data.frame polecenie().

Utwórz wykres 3D za pomocą biblioteki scatterplot3D.

Lub Możesz również obrócić swój wykres za pomocą biblioteki rgl za pomocą polecenia plot3d().

Alternatywnie można użyć polecenia plot3d() z biblioteki rcmdr.

W MATLAB można użyć polecenia surf(), mesh() lub surfl() zgodnie z wymaganiami.

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

0

Można również użyć Gnuplot który jest również dostępny z gretl. Połóż x Y Z danych na pliku tekstowego wkładkę następujące

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

Następnie można ustawić etykiety itp użyciu

set xlabel "xxx" rotate parallel 
set ylabel "yyy" rotate parallel 
set zlabel "zzz" rotate parallel 
set grid 
show grid 
unset key 
Powiązane problemy