2

必要なのは、X軸が対数スケールで表示されたヒストグラムです。ただし、ヒストグラムのすべてのバーを同じ幅にする必要があります。

いずれにせよ、私は狭いものとして高い値を持つ(または上に)表示バーを思いついた(それらは通常のスケールで同じ幅であり、対数スケールではない)。

これが私が今していることです:

edges = 10.^(c_min:0.1:c_max); 
h = histc(data, edges);
bar(edges, h); set(gca, 'Xscale', 'log');
4

2 に答える 2

3

バーは等間隔に配置する必要があるため、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'))
于 2012-08-13T12:25:04.137 に答える
1

patchの代わりに使用bar:

figure, hold on
edges = 10.^(c_min:0.1:c_max);
h = histc(data, edges);

for ii = 1:numel(edges)-1    
    patch(...
        [edges(ii) edges(ii) edges(ii+1) edges(ii+1)], ...
        [0 h(ii) h(ii) 0],...
        'b');
end

この特定のコードはあなたが望むことをしませんが、それはedges方法論ではなく の定義に問題があるため、 を少しいじる必要があります( edgesおそらく、patch

于 2012-08-13T12:29:43.597 に答える