如何在 Julia 中叠加等高线图(使用带有 PyPlot 后端的 Plots)

How to overlay contour plots in Julia (using Plots with PyPlot backend)

我正在尝试使用带有 PyPlot 后端的 Plots 在 Julia 中叠加两个等高线图。这可能吗?如果可能,怎么做?

MWE 可能看起来像这样:

using Plots
pyplot()
a = rand(50,50)
b = rand(50,50)
p1 = contour(a,seriescolor=:blues)
p2 = contour(b,seriescolor=:reds)
plot(p1,p2,layout=1)

(此代码生成 ERROR: When doing layout, n (1) != n_override (2)。我确实理解错误,但我不知道如何解决它。)

解决方案

使用contour!:

using Plots
pyplot()
a = rand(50,50)
b = rand(50,50)
contour(a,seriescolor=:blues)
contour!(b,seriescolor=:reds)

第一个等高线绘制a。第二个轮廓!在绘制 a 的同一 canvas 上绘制 b。

为什么 !

! 是 Julia(和其他一些语言)惯用的约定。 Julia 没有赋予 but 任何特殊含义,但开发人员这样做:约定是在方法更改现有状态时将 ! 附加到方法声明,例如修改其参数之一。在这种情况下,contour! 用于通过将现有图与另一个图叠加来修改现有图。