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