Джулия: Как создавать подсюжеты разных размеров с помощью PyPlot?

Я хочу создать фигуру, содержащую несколько графиков. Однако я хочу, чтобы каждый сюжет имел разный размер. Например, я хочу, чтобы первый участок был примерно в два раза шире второго участка. Я надеялся сделать что-то вроде этого:

using PyPlot

a = rand(500,900)
b = rand(500,400)  # notice how 'a' is 900 in width and 'b' is 400, i.e. 'a' is approximately twice as wide as 'b'

figure(1)
subplot(2,5,1:2) ; imshow(a)
subplot(2,5,3) ; imshow(b)
# and so on...

Но это, кажется, не работает. Кто-нибудь знает способ, позволяющий мне настроить размер каждого участка?


person Landon    schedule 17.11.2016    source источник


Ответы (2)


Как и в Matlab, в одном и том же окне рисунка могут быть подграфики разных размеров, если они не перекрываются и определяются с точки зрения допустимого элемента в допустимой сетке. например.:

julia> subplot(2,2,1); imshow(a);
julia> subplot(2,4,3); imshow(b); # note the different grid size

Однако, если вам нужен более точный контроль, то полностью откажитесь от команды subplot и вручную нарисуйте оси там, где вы хотите:

julia> axes([0.05, 0.55, 0.5,  0.4]); imshow(a);
julia> axes([0.6,  0.55, 0.35, 0.4]); imshow(b);
person Tasos Papastylianou    schedule 17.11.2016
comment
И, если вы чем-то похожи на меня, из моего опыта работы с Matlab, как только вы получите кайф от полного контроля над своими осями и аннотациями, вы никогда больше не будете использовать команду subplot для серьезной работы, за исключением случаев, когда вы хотите быстро протестировать что-то быстрое и грязное бок о бок, и вам не нужна тонкая настройка. :п - person Tasos Papastylianou; 18.11.2016

Такого рода вещи намного проще использовать Plots.jl. См., например. команда @layout в одном из первых примеров в документации.

person David P. Sanders    schedule 17.11.2016