hline/vline 在 Julia 中有子图

hline/vline with subplots in Julia

我正在尝试向子图添加一条水平线,从这个讨论中:https://discourse.julialang.org/t/vline-with-subplots/25479/2,我有以下内容

x = [1,2,3]
y1 = 2x
y2 = x.^2
plot([x, x], [y1, y2], layout = (2, 1))
hline!([4 4])

生成图。

现在我要做的是在底部绘制水平线,而不是在顶部绘制水平线。如果我只指定 hline!([4]) ,它默认为最上面的。有没有办法只做最下面的一个?

诀窍是跟踪情节句柄。

p = plot([x, x], [y1, y2], layout = (2, 1))

returns 一个图句柄(具体来说,一个 Plots.Plot{Plots.GRBackend} 对象)p 有两个元素,p[1](第一个子图)和 p[2](第二个子图)。如果只将 hline 添加到底部图,则可以这样写:

x = [1,2,3]
y1 = 2x
y2 = x.^2
p = plot([x, x], [y1, y2], layout = (2, 1))
hline!(p[2], [4])

单独绘制子图可能是最佳做法(如 isentropic 在 Slack 上提到的):

x = [1,2,3]
y1 = 2x
y2 = x.^2
p1 = plot(x, y1)
p2 = plot(x, y2)
hline!(p2, [4])
plot(p1, p2, layout = (2, 1))

但是如果你想一次全部搞定,你可以使用

hline!([[NaN], [4]])