在使用latex作为解释器时,我试图以独立于其他字体属性的方式控制子画面标题的属性(我认为最后一部分不相关,只是以防万一(。这是一个示例代码:
% 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')
当我这样做时,我可以设置轴标签、刻度标签和子绘图标题的大小和解释器。这使得标题具有与其他对象相同的样式。
是否有一种方法可以独立控制标题属性,使其稍微大一点,更大胆一点,例如,这样它们就可以很容易地与轴标签区分开来?
如果你只是想让标题更大,你可以在调用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
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
,或任何其他跨多个对象的公共属性。
值得一提的是,我通过设置以下"全局"属性(放在上面示例的末尾(来解决这个问题:
% 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}')
。在normal
和bold
之间更改属性Children.TitleFontWeight
似乎没有任何效果。