我想在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');
答案 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