【发布时间】:2020-02-09 00:21:45
【问题描述】:
我之前做了一些变通方法来在 Julia Plotly 中实现精彩的子图,但目前正在努力解决一个更复杂的问题。下面有三种方法可以完成这项工作。 draw1 完美,但不适用于我的情况,draw2 不适用,draw3 在 REPL 中适用,否则不适用。
这里是图的预期矩阵,也就是子图。 expected matrix of graphs
draw1 完成任务 -> 出现预期的图形矩阵
function draw1()
[plot([1,1,1]) plot([2,2,2]); plot([3,3,3]) plot([4,4,4])]
end
draw2a 和 draw2b 不会,无论是作为模块的函数调用还是复制到 REPL 中
function draw2a()
local mx = [1 2; 3 4]
local p(i) = plot([i,i,i])
p.(mx)
end
function draw2b()
local mx = [1 2; 3 4]
local p = map(i-> plot([i,i,i]), collect(1:4))
p[mx]
end
REPL 对 draw2a 和 draw2b 做同样的事情:
julia> subplots.draw2()
2×2 Array{PlotlyJS.SyncPlot,2}:
SyncPlot(data: [
"scatter with fields type, x, and y"
]
...
followed by the content of the graphs
如果将draw3复制到REPL中,则可以完美地完成这项工作,但如果被调用则不会
function draw3()
local p(i) = plot([i,i,i])
eval(Meta.parse("[p(1) p(2); p(3) p(4)]"))
end
如果调用:
julia> subplots.draw3()
ERROR: UndefVarError: p not defined
一定是范围问题
【问题讨论】:
标签: julia plotly metaprogramming subplot