我需要的是一个以对数刻度显示 X 轴的直方图。但是,我仍然希望直方图中的每个条形都具有相同的宽度。
无论如何,我想出了(或发现)具有较高值的显示条与较窄的显示条(它们在普通刻度上具有相同的宽度,而不是在对数刻度上)。
这是我现在正在做的事情:
edges = 10.^(c_min:0.1:c_max);
h = histc(data, edges);
bar(edges, h); set(gca, 'Xscale', 'log');
最佳答案
由于条形图应均匀分布,因此您可以使用 x 值 1,2,.. 绘制它们,然后更改轴标签。
edges = 10.^(c_min:0.1:c_max);
h = histc(data, edges);
centers = sqrt(edges(1:end-1).*edges(2:end));
bar(h)
%# fix the x-labels, x-axis extents
xlim([0.5,length(centers)+0.5])
set(gca,'xticklabel',num2str(centers(:),'%5.2f'))
关于matlab - 对数刻度(x 轴)直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11933787/