1

我正在尝试使用带有 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)。我确实理解错误,但我不知道如何解决它。)

4

1 回答 1

2

解决方案

使用contour!

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

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

为什么!

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

于 2018-06-19T07:18:33.893 回答