在Matlab中使用对数刻度的x轴绘制条形图并保持相同的宽度。

5

我希望在Matlab中绘制一张柱状图,其中(1) x轴要使用对数刻度, (2) 所有的柱子宽度相同。但是,使用下面的代码,柱子的宽度是不同的。请问有人能帮忙吗?非常感谢!

    xdata = [0.01 0.018 0.032 0.056 0.1 0.18 0.32 0.56 1 1.8 3.2 5.6 10];
    ydata = [1.3 1.6 1.5 1.2 1.0 3.5 0.6 3.1 1.6 1.9 1.7 0.3 0.4];
    bar(xdata,ydata);
    set(gca,'XScale','log');

enter image description here

1个回答

8

不要在对数坐标轴上绘制xdata,而是在线性坐标轴上绘制xdata的对数。然后修改标签以反映线性值(而不是使用的对数值)。

xdata = [0.01 0.018 0.032 0.056 0.1 0.18 0.32 0.56 1 1.8 3.2 5.6 10];
ydata = [1.3 1.6 1.5 1.2 1.0 3.5 0.6 3.1 1.6 1.9 1.7 0.3 0.4];
bar(log10(xdata),ydata);
set(gca,'Xtick',-3:1); %// adjust manually; values in log scale
set(gca,'Xticklabel',10.^get(gca,'Xtick')); %// use labels with linear values

enter image description here


谢谢!这正是我想要的。 - user2230101
1
真的非常聪明 :) - SleepingSpider

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接