1

我正在用 MATLAB 绘制一个 3-D 直方图,它工作得很好,除了不同的轴范围。我希望它们以某种方式定义,其中等值对位于二等分线上。

我的代码看起来像这样(或多或少从hist3MATLAB 示例中“窃取”):

[vec_voxel_ids, vec_dose_values_reference, vec_dose_values_control] = ...
    textread('_BOOSTINT_voxel_data.txt', '%u %u %u');
mat_dose_values = [vec_dose_values_reference, vec_dose_values_control];
hist3(mat_dose_values, [100, 100]);
xlabel('Dose Reference');
ylabel('Dose Control');
set(gcf, 'renderer', 'opengl');
set(get(gca,'child'), 'FaceColor', 'interp', 'CDataMode', 'auto');

这是它的外观: 直方图

4

1 回答 1

4

为了重新定位 bin 以使其中心对齐刻度并选择 bin 值的范围,您可以使用hist3's'edges'选项(类似于 中的选项histc):

data = 500+5*randn(1e3,2);           % dummy data
d = 1;                               % width for x and y bins
x = 480:d:520;                       % range for x bins
y = x;                               % use same range for y bins, can be different
hist3(data, 'edges', {x-d/2,y-d/2}); % subtract half bin width to center bins
set(gcf, 'renderer', 'opengl');
set(get(gca,'child'), 'FaceColor', 'interp', 'CDataMode', 'auto');
view(2)
axis equal
axis([478 522 478 522])
grid minor
xlabel('x')
ylabel('y')

此示例产生如下内容: hist3 输出

请注意,这是对数据的重新分箱,因此与以前相比,您的输出看起来可能略有不同。箱已被移动以对齐它们的中心并重新计算直方图。

于 2013-07-17T19:37:24.153 回答