如何将 Octave 图的 x 轴编号设置为工程符号?

How can I set the numbering of the x-axis of an Octave plot to engineering notation?

我做了一个很简单的Octave脚本

a = [10e6, 11e6, 12e6];
b = [10, 11, 12];
plot(a, b, 'rd-')

输出下图。

Graph

是否可以将x轴上的编号设置为工程符号而不是科学符号,并让它显示“10.5e+6、11e+6、11.5e+6”而不是“1.05e+” 7, 1.1e+7, 1.15+e7"?

虽然 Octave 提供了一个 'short eng' 格式化选项,它可以满足您在打印到终端方面的要求,但它似乎没有在绘图中或通过 [= 格式化字符串时提供此功能11=].

因此,您必须自己找到一种方法,对初始 xticks 进行一些创造性的字符串处理,并相应地替换绘图的 ticklabels。谢天谢地,这并不难:)

使用你的例子:

a = [10e6, 11e6, 12e6];
b = [10, 11, 12];
plot(a, b, 'rd-')

format short eng   % display stdout in engineering format

TickLabels = disp( xticks )                                    % collect string as it would be displayed on the stdout
TickLabels = strsplit( TickLabels )                            % tokenize at spaces
TickLabels = TickLabels( 2 : end - 1 )                         % discard start and end empty tokens
TickLabels = regexprep( TickLabels, '\.0+e', 'e' )             % remove purely zero decimals using a regular expression
TickLabels = regexprep( TickLabels, '(\.[1-9]*)0+e', 'e' )   % remove non-significant zeros in non-zero decimals using a regular expression

xticklabels( TickLabels )   % set the new ticklabels to the plot

format   % reset short eng format back to default, if necessary