首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数中Makie.jl场景中的多个网格图

函数中Makie.jl场景中的多个网格图
EN

Stack Overflow用户
提问于 2021-03-18 19:17:25
回答 1查看 464关注 0票数 2

如何在函数中绘制两个网格?

从REPL中,我可以执行以下操作并得到一个包含两个多维数据集的图:

代码语言:javascript
复制
using Makie
A = FRect3D(Vec3f0(0), Vec3f0(1))
B = FRect3D(Vec3f0(1), Vec3f0(1))
s = Scene()
mesh(A, color = :red)
mesh!(B, color = :blue)

但是,在函数调用中,我似乎无法让它工作:

我的尝试:

代码语言:javascript
复制
using Makie

function draw_cubes()
    A = FRect3D(Vec3f0(0), Vec3f0(1))
    B = FRect3D(Vec3f0(1), Vec3f0(1))
    mesh(A, color = :red)
    mesh!(B, color = :blue)
end

s=Scene()
draw_cubes()

给我留下一个空白的场景,然后回来

组合{ GeometryBasics.FaceView{GeometryBasics.Ngon{3,{AbstractPlotting.mesh,Tuple{GeometryBasics.Mesh{3,Float32,GeometryBasics.Ngon{3,Float32 32,3,GeometryBasics.PointMeta{3,Float32,Point{3,Float32},(:uv,:normals),Tuple{Vec{2,Float32},Vec{3,Float32}},

Float32 32,3,GeometryBasics.PointMeta{3,Float32,Point{3,Float32},(:uv,:normals),Tuple{Vec{2,Float32},Vec{3,Float32},StructArrays.StructArray{GeometryBasics.PointMeta{3,{3,Float32,点{3,Float32},(:uv,:法线),Tuple{Vec{2,Float32},Vec{3,Float32}},GeometryBasics.NgonFace{3,GeometryBasics.OffsetInteger{-1,UInt32},GeometryBasics.NgonFace{3,GeometryBasics.OffsetInteger{-1,UInt32},Float32,点{3,Float32},(:uv,:法线),Tuple{Vec{2,Float32},Vec{3,Float32}},1,NamedTuple{(位置,:uv,:规范),Tuple{数组{3,Float32},1},数组{Vec{2,Float32},1},数组{Vec{3,Float32},1},Int64},数组{GeometryBasics.NgonFace{3,GeometryBasics.OffsetInteger{-1,UInt32}},1}

注释掉mesh!行,成功地绘制了第一个多维数据集。我就是拿不到第二个。

我还尝试将场景传递给函数,在函数中声明场景(或使用global s),但没有结果。

非Makie解决方案(只要它们是交互式情节),也可以作为答案.但我想找出我哪里出了问题。

(我使用的是Julia版本1.5.3 (2020-11-09);Makie v0.12.0)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 16:40:23

把场景作为函数的论据似乎是可行的,实际上.当我使用mesh作为第一个调用时,它不起作用(给出了一堆Warning: No strict ticks found和一个ERROR: MethodError: no method matching _default(::Observable{Scene}, ::GLMakie.GLAbstraction.Style{:default}, ::Dict{Symbol,Any}))。

然而,

代码语言:javascript
复制
function draw_cube_scene(s::Scene)
        A = FRect3D(Vec3f0(0), Vec3f0(1))
        B = FRect3D(Vec3f0(1), Vec3f0(1))
        mesh!(s, A, color = :red)
        mesh!(s, B, color = :blue)
        s
    end

确实很管用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66697716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档