2016-01-15 114 views
7

最近我試圖用PyPlot/Julia繪製一個球體,不幸的是它比我想像的要困難。 可能有點代有點問題,但我無法弄清楚爲什麼我的實現不起作用。儘管原始python代碼一切都很好。用Julia和PyPlot繪製球體

我試圖從matplotlib表面圖文檔適應demo2爲MWE:

using PyPlot 
u = linspace(0,2*π,100); 
v = linspace(0,π,100); 

x = cos(u).*sin(v); 
y = sin(u).*sin(v); 
z = cos(v); 

surf(x,y,z) 

而且我越來越this代替the right one.

那麼,什麼是我在茱莉亞實施究竟錯了嗎?

+1

你確定這不是你不定義'y'錯字? – nicoguaro

+0

謝謝,我的錯誤。當然這是錯字。否則,它會失敗並顯示錯誤。 – gudvinr

回答

7

x,yz應該是矩陣,而不是矢量 - 否則您只在曲面上繪製曲線,而不是曲面本身。

using PyPlot 
n = 100 
u = linspace(0,2*π,n); 
v = linspace(0,π,n); 

x = cos(u) * sin(v)'; 
y = sin(u) * sin(v)'; 
z = ones(n) * cos(v)'; 

# The rstride and cstride arguments default to 10 
surf(x,y,z, rstride=4, cstride=4) 

最初繪製的曲線對應於那些矩陣的對角線。

plot(diag(x), diag(y), diag(z), color="yellow", linewidth=3) 

Sphere+curve

+0

上面的第一個圖不是繪製在球體上的曲線 - 它具有直圓柱形而非球形組件。 – javadba

+0

@javadba你可以通過計算與原點的距離(平方)來確定它們是否確實在球體上,所有點都是1。 Matplotlib嘗試將曲線繪製爲曲面的方式可能會引起混淆,使用將每個點鏈接到第一個點的線段。 –

+0

thx用於顯示沿對角軸的繪圖。 – javadba