Заголовок подзаголовка MATLAB и метки осей

У меня есть следующий сценарий, чтобы в конечном итоге построить подзаговор 4 на 2:

files = getAllFiles('preliminaries');

n = size(files);
cases = cell(1, n);
m = cell(1, n);

for i = 1:1:n
    S = load(files{i});

    cases{i} = retransmission_distribution(S);

    c = size(cases{i});
    m{1,i} = cell(1, c(2));

    %figure(i);
    str_size = size(files{i});
    title_str = files{i}(5:str_size(2) - 4);
    title_str = strrep(title_str, '_', ' ');
    %title(title_str);
    for j = 1:1:c(2)
        [x, y] = hist(cases{i}{1,j});
        m{1,i}{1,j} = [x; int32(y)];
        %  subplot(4, 2, j);
        %  xlabel('Number of Retransmissions');
        %  ylabel('Number of Occurrences');
        %  bar(y, x, 'histc');
    end
end

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

7
задан Peter Mortensen 11 October 2012 в 20:47
поделиться

2 ответа

Что касается меток осей, Мэтт прав , говоря, что они должны быть размещены после вызова BAR . Это решит проблему одной метки оси. Однако вы, вероятно, заметите, что ваши метки оси Y, в частности, могут быть написаны друг над другом, если они слишком длинные. У вас есть несколько способов исправить это. Во-первых, вы можете настроить размер шрифта в своем вызове на YLABEL :

ylabel('Number of Occurrences','FontSize',7);

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

ylabel({'Number of' 'Occurrences'});

Чтобы добавить заголовок ко всему рисунку, лучшим вариантом, вероятно, будет создать статический текстовый объект UICONTROL и отрегулировать его положение так, чтобы он располагался в верхней части фигура. Сначала вы можете получить размер и положение фигуры, чтобы помочь вам разместить текстовое поле рядом с верхом и в центре:

figureSize = get(gcf,'Position');
uicontrol('Style','text',...
          'String','My title',...
          'Position',[(figureSize(3)-100)/2 figureSize(4)-25 100 25],...
          'BackgroundColor',get(gcf,'Color'));

Это создаст статическое текстовое поле шириной 100 пикселей и высотой 25 пикселей, размещенное в центре верха рисунка и с тем же цветом фона, что и рисунок.

8
ответ дан 6 December 2019 в 10:47
поделиться

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

Что касается меток осей, попробуйте поместить команды меток после команды bar.

2
ответ дан 6 December 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: