Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Plots.jl中的pyplot。如何使多个子地块只有一个colobar?_Python_Matplotlib_Julia_Plots.jl - Fatal编程技术网

Python 使用Plots.jl中的pyplot。如何使多个子地块只有一个colobar?

Python 使用Plots.jl中的pyplot。如何使多个子地块只有一个colobar?,python,matplotlib,julia,plots.jl,Python,Matplotlib,Julia,Plots.jl,我正在使用Plots.jl在同一个图形中绘制多个绘图。当使用pyplot后端时,每个绘图都有自己的颜色栏,我不希望它们有相同的数据。我试图复制来自的答案,但是我不知道Plots.jl API下的机器的细节,所以我无法复制它。我的情节如下: using Plots;pyplot() p1 = plot(a,st=:contour,fill=true) p2 = plot(b,st=:contour,fill=true) p = plot(p1,p2) 链接中的答案(用python编写)是: f

我正在使用Plots.jl在同一个图形中绘制多个绘图。当使用pyplot后端时,每个绘图都有自己的颜色栏,我不希望它们有相同的数据。我试图复制来自的答案,但是我不知道Plots.jl API下的机器的细节,所以我无法复制它。我的情节如下:

using Plots;pyplot()
p1 = plot(a,st=:contour,fill=true)
p2 = plot(b,st=:contour,fill=true)
p  = plot(p1,p2)
链接中的答案(用python编写)是:

fig, axes = plt.subplots(nrows=2, ncols=2)
for ax in axes.flat:
    im = ax.imshow(np.random.random((10,10)), vmin=0, vmax=1)

fig.subplots_adjust(right=0.8)
cbar_ax = fig.add_axes([0.85, 0.15, 0.05, 0.7])
fig.colorbar(im, cax=cbar_ax)

plt.show()
据我所知,for中的代码实际上是在plt.subplot创建的轴上进行绘图(在我的例子中,这是由plot.jl完成的) 下一行使绘图更接近,然后线fig.add_轴为颜色条创建一个新轴。 最后,fig.colorbar的线在新轴中创建一个colorbar,并使用for循环中最后一个绘图的数据

我目前的代码是:

cbar_ax = p.o[:add_axes]([0.85, 0.15, 0.05, 0.7]);
p.o[:colorbar](p.o[:axes][1][:contourf],cax=cbar_ax)
display(p)
它不起作用(我不希望它起作用,因为我不知道我在做什么

我得到的错误是:

AttributeError(“函数”对象没有“自动缩放”属性)

这让我觉得p.o[:contourf]不是召唤我想要的东西的方式


有人能帮上忙吗?谢谢一般来说,如果你想在PyPlot对象上使用代码,最好只使用PyPlot而忘记Plot。这种混合在实践中很少起作用。 如果你想使用绘图,你应该能够做到

using Plots;pyplot()
lims = extrema([a;b])
p1 = plot(a,st=:contour,fill=true, colorbar = false)
p2 = plot(b,st=:contour,fill=true, colorbar = true, clims = lims)
p  = plot(p1,p2)

其中一个子绘图将比另一个子绘图宽得多-您可能需要使用
@layout
进行调整,以使它们具有相同的宽度。

一般来说,如果您想在PyPlot对象上使用代码,最好只使用PyPlot而忽略绘图。这种混合在实践中很少起作用。 如果你想使用绘图,你应该能够做到

using Plots;pyplot()
lims = extrema([a;b])
p1 = plot(a,st=:contour,fill=true, colorbar = false)
p2 = plot(b,st=:contour,fill=true, colorbar = true, clims = lims)
p  = plot(p1,p2)
其中一个子地块将比另一个子地块宽得多-您可能需要使用
@layout
进行调整,以使它们具有相同的宽度