同时但独立地控制子图形字体属性



在使用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}')。在normalbold之间更改属性Children.TitleFontWeight似乎没有任何效果。

相关内容

  • 没有找到相关文章