Matplotlib 用Julia和PyPlot绘制球体

Matplotlib 用Julia和PyPlot绘制球体,matplotlib,julia,Matplotlib,Julia,最近我尝试使用PyPlot/Julia绘制球体,不幸的是,这比我想象的要难。 点生成可能有问题,但我不明白为什么我的实现不起作用。尽管原始python代码一切正常 我已尝试将matplotlib曲面打印文档改编为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) 而我得到的不是 那么,

最近我尝试使用PyPlot/Julia绘制球体,不幸的是,这比我想象的要难。 点生成可能有问题,但我不明白为什么我的实现不起作用。尽管原始python代码一切正常

我已尝试将matplotlib曲面打印文档改编为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)
而我得到的不是


那么,我的Julia实现到底出了什么问题?

x
y
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)
最初绘制的曲线对应于这些矩阵的对角线

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

这在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)

你确定这不是你的打字错误没有定义
y
?谢谢,我错了。当然是打字错误。否则它将失败,并出现错误。上面的第一个图表不是在球体上绘制的曲线-它有直圆柱而不是球形的组件。@javadba您可以通过计算到原点的(平方)距离来检查它们是否确实在球体上,
x.^2+y.^2+z.^2
:所有点都是1。可能令人困惑的是Matplotlib试图将此曲线绘制为曲面的方式,即使用将每个点链接到第一个点的线段。