在matlab中绘制条形图,具有对数刻度x轴和相同宽度

时间:2014-03-14 16:28:44

标签: matlab plot

我想在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 个答案:

答案 0 :(得分:5)

不是在对数刻度上绘制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