Julia Plots 中的多轴(GR 后端)

Multiple axes in Julia Plots (GR backend)

如何在 Jupyter notebook 中使用 Julia (1.4.1) 和 Plots 绘制一组曲线,其中一些使用 x 轴和左侧 y 轴,一些(不止一个!)使用x轴和右边的y轴?无论我尝试什么,我总是只有一个图(第一个图,它获取 twinx 命令)使用右 y 轴,而后面的图再次使用第一个(左)轴。在其他几件事中,我尝试了

epl=plot(title="A title",legend=:topright)
epl=plot!(x_arr,y1_arr)
epl=plot!(x_arr,y2_arr)
epl=plot!(twinx(),x_arr,y3_arr,legend=:bottomright)
epl=plot!(x_arr,y4_arr)
display((epl))

还有

epl=plot(title="A title",legend=:topright)
epl=plot!(x_arr,[y1_arr,y2_arr])
epl=plot!(twinx(),x_arr,[y3_arr,y4_arr],legend=:bottomright)
display((epl))

后者效果好一些,但我不知道如何为每个矢量元素定义单独的线型、图例标签等;我尝试将匹配向量分配给相应的关键字参数失败。第二个 y 轴的标签(不包括在上面的示例中)也没有显示。图例在第一种情况下是错误的,在第二种情况下根本不会出现。 我使用的界面显然是 gr(),我更喜欢它,但我不确定。

plot! 函数采用可选的第一个绘图对象进行修改。如果不传入要修改的图,则使用全局图。

当您调用 twinx() 时,它会创建一个您可以 plot! 进入的新子图 — 一个位于当前全局图内的子图 — 然后它会更新并 returns 整个图.您的下一个 plot! 只是像往常一样更新第一个子图。

关键是保存你的孪生子图并明确地 plot! 放入其中。

epl=plot(title="A title", legend=:topright)
plot!(x_arr, y1_arr) # could be explicitly `plot!(epl, x_arr, y1_arr)`
plot!(x_arr, y2_arr)
subplot = twinx()
plot!(subplot, x_arr, y3_arr, legend=:bottomright)
plot!(subplot, x_arr, y4_arr)