2016-01-15 53 views
7

最近、私はPyPlot/Juliaを使って球をプロットしようとしましたが、残念ながら思ったよりも難しかったです。 おそらくポイント生成に問題がありますが、なぜ実装がうまくいかなかったのかわかりません。すべて元のPythonコードでは問題ありません。JuliaとPyPlotをプロットする球

私はMWEとしてmatplotlibの表面プロットドキュメントからdemo2に適応しようとしました:

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

xyzは行列ではなく、ベクトルでなければなりません - そうあなただけの球の上に描かれた曲線、代わりの表面自体を持っています。

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 'x。^ 2 + y。^ 2 + z。^ 2':すべての点で1であることを確認して、それらが実際に球上にあることを確認できます。 Matplotlibは、各点を最初にリンクするセグメントを使用して、この曲線をサーフェスとして描画する方法が混乱する可能性があります。 –

+0

thxは対角軸に沿ってプロットを表示します。 – javadba

関連する問題