Управление свойствами шрифта подзаголовка сразу, но независимо - PullRequest
0 голосов
/ 21 ноября 2018

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

% Figure handle
fig1 = figure;

% Subplot 1
subplot(2,1,1)
plot(rand(100,1))
xlabel('$x$ label')
ylabel('$y$ label')
title('First subplot')

% Subplot 2
subplot(2,1,2)
plot(rand(100,1))
xlabel('$x$ label')
ylabel('$y$ label')
title('Second subplot')

% Setting global properties
set(findall(fig1,'-property','FontSize'),'FontSize',14)
set(findall(fig1,'-property','Interpreter'),'Interpreter','Latex')
set(findall(fig1,'-property','TickLabelInterpreter'),'TickLabelInterpreter','Latex')

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

Существует ли способ независимого управления свойствами титров, например, чтобы они были немного больше и ярче, чтобы их можно было легко отличить от меток осей?

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

Для чего бы это ни стоило, я решил эту проблему, установив следующие «глобальные» свойства (помещенные в конце примера выше):

% Setting global properties
set(findall(fig1,'-property','Interpreter'),'Interpreter','latex')
set(findall(fig1,'-property','TickLabelInterpreter'),'TickLabelInterpreter','latex')
set(findall(fig1,'-property','Title'),'FontSize',14)
set(findall(fig1.Children,'-property','TitleFontSizeMultiplier'),'TitleFontSizeMultiplier',1.8)

Несколько замечаний.Свойство Children.TitleFontSizeMultiplier в дескрипторе рисунка масштабирует все, что у вас есть, как FontSize.Однако спецификацию FontSize нельзя поместить до Interpreter, так как это, кажется, блокирует любые дальнейшие спецификации размера шрифта.

Если вы хотите использовать жирный шрифт при использовании интерпретатора latex, вам необходимо указать это непосредственно в заголовке: title('\textbf{First subplot}').Изменение свойства Children.TitleFontWeight между normal и bold, похоже, не имеет никакого эффекта.

0 голосов
/ 22 ноября 2018

Инструкция set может быть применена к массиву графических дескрипторов, поэтому, если вы хотите изменить свойства всех ваших заголовков, просто сначала соберите их дескрипторы в массив, а затем используйте set команда на массиве дескрипторов.

Итак, в вашем примере замените

% ...
title('First subplot')
% ...
title('Second subplot')
% ...

на:

% ...
ht(1) = title('First subplot')
% ...
ht(2) = title('Second subplot')
% ...

Теперь у вас естьмассив дескрипторов ht к вашим заголовкам.Теперь, чтобы изменить их все в одном пакете, не изменяя ничего другого:

set( ht , 'FontSize',18, 'FontWeight','bold')

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

% build a collection of xlabel array
hxlabel = [hax(1).XLabel hax(2).XLabel] ;
% Set their label and interpreter all at once
set( hxlabel , 'String' , '$x$ label' , 'Interpreter','Latex' )

Это применимо к одному и тому же xlabel ко всем подзаговорам и одновременно установит для их интерпретатора значение latex.

То же рассуждение может быть применено к ylabel или любому другому общему свойству в отношениимного объектов.

0 голосов
/ 21 ноября 2018

Если вы просто хотите увеличить заголовки, вы можете установить их при вызове команды title:

title('First subplot', 'FontSize', 14, 'FontWeight', 'bold')

Если вы хотите иметь больший контроль над размерами шрифта отдельных объектов,Вы должны сохранить дескриптор оси (который создается при создании подзаговора):

ax1 = subplot(211)
ax2 = subplot(212)

% set the properties of the title:
ax1.Title.FontSize = 14;

% set the properties of the XAxis:
ax1.XAxis.FontSize = 7;

Чтобы увидеть, какие настройки вы можете изменить, просто вызовите дескриптор в командном окне, которое даст вам более подробную информацию:

>> ax1.Title

ans = 

  Text (First subplot) with properties:

                 String: 'First subplot'
               FontSize: 14
             FontWeight: 'bold'
               FontName: 'Helvetica'
                  Color: [0 0 0]
    HorizontalAlignment: 'center'
               Position: [50.0001 1.0139 0]
                  Units: 'data'

Если вы хотите установить свойства титров в разных осях (подзадачах) на рисунке, вы можете сохранить оси в массиве ячеек:

ax = {subplot(211), subplot(212)};

plot(ax{1}, rand(100,1));
plot(ax{2}, rand(100,1));

for i=1:numel(ax)
    ax{i}.Title.Fontsize = 14;
end
...