Julia PyPlot:使用表面梯度范数作为面颜色绘制3D表面

9
1个回答

10

我看到这个,就必须让它起作用。 使用PyPlot后端,几乎可以直接支持Plots.jl,只需要更换自定义的matplotlib着色器以应用不同的z矩阵。

您会注意到我正在访问numpy的梯度函数(通过PyCall导入),并且我正在包装梯度矩阵G,以使其不被切成列。 总之...比Python示例简单得多!

    using Plots; pyplot();
    x = y = LinRange(-5.0, 5.0, 30)
    z = sin(sqrt(Float64[xi^2+yi^2 for xi = x, yi = y]))
    surface(x, y, z, alpha = 0.7)

enter image description here

    using PyCall
    Gx, Gy = Plots.pynb.pymember(:gradient)(z)
    surface(x, y, z, alpha = 0.8, zcolor = wrap(G))

enter image description here


我喜欢Plots.jl中简洁的语法。stevengj在PyPlot中建议了以下内容https://github.com/JuliaLang/IJulia.jl/issues/418#issuecomment-215609485 - René Hiemstra
2
在 Julia v1.5 中,你会如何使用 Plots.jl 实现这个功能? - René Hiemstra
@Tom Breloff:如果您能将语法更新为Julia 1.6,我将不胜感激,因为它已经无法运行了。这是该主题的排名前列的问题/答案。非常感谢! - PatrickT
我可以使用 surface(x, y, abs.(z), alpha = 0.7) 让第一部分运行起来,摆脱复杂的部分。 - PatrickT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接