八度:自动记录具有任意日志基数的图

时间:2014-06-22 06:42:27

标签: plot gnuplot octave

我想以对数刻度绘制一些数据,但无法找到自动更改对数刻度基数的选项。

x = 1:100;
y = 2 .^ x;

semilogy(x, y);

给了我

enter image description here

我已经能够手动更改y刻度。

x = 1:100;
y = 2 .^ x;

semilogy(x, y);
set(gca, 'ytick', 2 .^ (0:20:100));
set(gca, 'yticklabel', {'2^{0}' '2^{20}' '2^{40}' '2^{60}' '2^{80}' '2^{100}'});

给了我

Plot with log base 2 scale

我对我得到的情节感到满意,但出于好奇,是否可以选择自动更改对数刻度的日志基础?

1 个答案:

答案 0 :(得分:0)

正如克里斯托夫所说,在八度音或matlab中没有选择。您可以自动执行一点过程,并确保刻度位置和标签之间的一致性,如here所述。

例如

x = 1:100;
y = 2 .^ x;

semilogy(x, y);
base = 2;
tick_exponents = 0:20:100;
set(gca, 'ytick', base .^ tick_exponents);
format_string = sprintf('%d^{%%d}', base);
tick_labels = num2str(tick_exponents(:), format_string)
set(gca, 'yticklabel', tick_labels);

产生 enter image description here