Я использую Plots.jl, чтобы создать несколько графиков на одной фигуре.При использовании бэкэнда pyplot у каждого графика есть своя собственная цветовая панель, которая мне не нужна, так как они имеют одинаковые данные.Я пытаюсь повторить ответ из этого вопроса , однако я не знаю подробно о механизме под API Plots.jl, поэтому я не смог его воспроизвести.Мой сюжет сделан так:
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.subplots (в моем случае это делается с помощью Plots.jl. Следующая строка делает графики ближе, а затем линия fig.add_axes создает новую ось для цветовой шкалы. Наконец,строка fig.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 ("'function')У объекта нет атрибута 'autoscale_None' ")
Что заставляет меня думать, что po : axes [: contourf] не способ вызвать то, что я пытаюсь.
Может кто-нибудь помочь? Спасибо