Matlab中坐标轴刻度标签的换行

10

在Matlab中,有没有一种方法可以在轴刻度标签中换行,以产生多行刻度标签?

这里提供的两个其他文本元素的建议似乎不起作用:

set(gca,'xticklabel',{{'line1','line2'}}) 

失败了,而且

set(gca,'xticklabel',{['line1' 10 'line2']}) 
或者
set(gca,'xticklabel',{['line1' 13 'line2']}) 

忽略换行符或回车符。有什么想法吗?


我认为在刻度标签上不可能有多行。然而,有一个解决方法。点击此处 - P0W
我正在使用Octave,但是我可以在xticklabel中包含\n来实现换行。 - Bowi
2个回答

11

我不确定这个功能存在多久了,但至少在R2015b版本中,坐标轴对象拥有一个名为'TickLabelInterpreter'的属性,可以指定如何解释刻度标签。如果您选择使用LaTeX解释器,则可以通过将它们包裹在表格环境中来轻松地创建多行刻度标签。

例如:

figure;
plot(rand(10,1));
%// Tick label with arbitrary number of lines in tabular environment
xtl = '\begin{tabular}{c} line 1 \\ line 2 \\ line 3\\ line 4\end{tabular}';
%// use the tick label at location 5 on the x axis
set(gca,'xtick', 5, 'XTickLabel', xtl, 'TickLabelInterpreter', 'latex');

输出:

多行刻度标签

当然,这里的缺点是您需要使用LaTeX解释器,这会在一定程度上改变图形的外观。但我相信有些人(比如我)实际上更喜欢LaTeX解释的图形注释的外观呈现方式!作为额外的奖励,您可以在标签中使用任何其他LaTeX标记(方程等)。


1
我建议您使用 Mikhail Erofeev 的 fix_xticklabels()。您可以使用空格字符填充刻度标签,例如 " ",以调整输出。

使用strjust函数可以方便地实现自动填充空格,而不需要手动添加。 - Dev-iL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接