如何将 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
我做了一个很简单的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