2013-07-18 3 views
0

У меня есть следующая функция, которая должна создавать подзаголовки, которые плотно расположены в пределах строки и распределены с интервалом в каждом столбце. Она также позволяет установить буфер размеров для ребер:Matlab subplot исчезает при перестановке

function fill_graph() 
for x=1:3 
    for y=1:3 
     ax = subplot(3,3,(x-1)*3+y); 
     left_buffer = .05; 
     right_buffer = .025; 
     x_pos = left_buffer+(x-1)*(1/3*(1-left_buffer-right_buffer)); 
     width = 1/3*(1-left_buffer-right_buffer); 
     bottom_buffer = .1; 
     top_buffer = .05; 
     spacing=.07; 
     height = (1/3)*(1-2*spacing-top_buffer-bottom_buffer); 
     y_pos = bottom_buffer+(y-1)*(spacing+height); 
     set(ax,'position',[x_pos,y_pos,width,height]) 
     if x>1 
      set(gca,'yTickLabel',''); 
      ylabel(''); 
     end 
     if y>1 || x~=2 
      xlabel('') 
     end 
    end 
end 

Когда я запускаю функцию, нижний ряд участков и крайний левый участок на среднем ряду все исчезают.

Я знаю, что это, вероятно, связано с тем, единственный способ, которым я нашел, - установить нижний буфер выше 0,34, который работает только некоторое время). Я попытался переключить «позицию» на «внешнее», что должно сделать так, чтобы ни одна из них не перекрывалась, но это тоже не работает.

Я видел Second subplot disappearing, но когда я указываю позицию таким образом (subplot('position',x_pos,y_pos,width,height)), он пишет над участками, которые уже есть. Если я поместил этот код до Я планирую, размеры участка изменяются, как только я выдаю команду графика.

ответ

1

Попробуйте заменить subplot(....) на axes().

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

Команда axes только делает новую ось на фигуре, независимо от того, что еще там уже есть. Например, я построил графики, где оси намеренно перекрываются. Пока вы выполняете всю работу по позиционированию самостоятельно, не тратьте свое время на subplot.

+0

Отличный совет. Работал как шарм. Спасибо. –

Смежные вопросы