用Julia和PyPlot绘制球体

时间:2016-01-15 22:39:04

标签: matplotlib julia

最近我试图使用PyPlot / Julia绘制一个球体,不幸的是它比我想象的要难。 点生成可能有问题,但我无法弄清楚为什么我的实现不起作用。虽然原始的python代码一切都很好。

我尝试将matplotlib曲面图doc中的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.

那么,我的Julia实施中出了什么问题呢?

2 个答案:

答案 0 :(得分:7)

<select id="id_preview_style_select" size="10" autofocus> <option value="0">Style 0</option> <option value="1">Style 1</option> <option value="2">Style 2</option> <option value="3">Style 3</option> .... <option value="50" selected focus>Style 50</option> .... <option value="99">Style 99</option> <option value="100">Style 100</option> </select> xy应该是矩阵,而不是矢量 - 否则您只在球体上绘制曲线,而不是曲面本身。

z

最初绘制的曲线对应于那些矩阵的对角线。

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)

Sphere+curve

答案 1 :(得分:1)

这在Julia 1.1.2中不再适用于绘制球体。改用它

using PyPlot
n = 100
u = range(0,stop=2*π,length=n);
v = range(0,stop=π,length=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)