Plot 倍频程:自动绘制任意对数基的对数图
我想以对数刻度绘制一些数据,但找不到自动更改对数刻度基准的选项Plot 倍频程:自动绘制任意对数基的对数图,plot,gnuplot,octave,Plot,Gnuplot,Octave,我想以对数刻度绘制一些数据,但找不到自动更改对数刻度基准的选项 x = 1:100; y = 2 .^ x; semilogy(x, y); 给我 我已经能够手动更改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}'}); 给我
x = 1:100;
y = 2 .^ x;
semilogy(x, y);
给我
我已经能够手动更改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}'});
给我
我对我得到的图很满意,但出于好奇,是否有一个选项可以自动更改对数刻度的对数基数?正如Christoph所说,在倍频程或matlab中没有选项。如前所述,您可以稍微自动化该过程,并确保记号位置和标签之间的一致性 比如说
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);
产生
我不知道您为什么添加了
gnuplot
标记。使用gnuplot,您只需使用set logscale x 2
切换到使用基数2即可。@Christoph:我之所以添加它,是因为我认为gnuplot社区可能也知道在OctaveOk中执行此操作的方法,只是想知道使用普通gnuplot的答案是否也可以接受。我看了一下semilogx.m
,它使用set(gca,'xscale','log')
,但是xscale
的唯一选项是linear
和log
。所以我想你们要么坚持使用手工勾号,要么直接使用gnuplot。我们拭目以待:)