matlab 'text' 命令中的文本对齐

Alignment of text in matlab 'text' command

我想在带有“:”符号垂直对齐的 matlab 图形上打印以下文本:

Total Events: 1234
Mean Value: 1234
Standard Deviation: 1234
1st Quartile: 1234
...
...

我正在使用 text 函数并尝试手动插入空格,但它们似乎从来没有完美对齐并且看起来呈波浪形。

任何帮助,请。

使用string format

strings = {'Total Events', 'Mean Value', 'Standard Deviation', '1st Quartile'};
max_len = max( cellfun( @numel, strings ) );
fs = sprintf( '%% %ds: 1234\n', max_len );
cellfun( @(x) fprintf(1,fs,x), strings );

结果:

      Total Events: 1234
        Mean Value: 1234
Standard Deviation: 1234
      1st Quartile: 1234

如你所见,右对齐的命令是

 sprintf( '% 18s: 1234', strings{1} )

所以,最终在你的 text 命令中,你可以使用 sprintf:

来格式化一个字符串,而不是明确地写一个字符串
 text( 0, 0, sprintf( '% 18s: %d', strings{ii}, values(ii) );

假设您有 strings - 字符串元胞数组和相同长度的数组 values 以及要打印的对应值。

您可以使用固定宽度的字体并使用元胞数组将文本放在不同的行上:

text( 0, 0, { '      Total Events: 1234' ...
              '        Mean Value: 1234' ...
              'Standard Deviation: 1234' ...
              '      1st Quartile: 1234' }, 'FontName', 'FixedWidth' )