使用bar3绘制3D直方图

时间:2013-07-27 10:39:59

标签: matlab visualization histogram

我目前正在尝试使用bar3绘制hist3的输出。这是一个简单的例子:

vec_x = [1 2 4 5 7 8 9 3 8 7 2]';
vec_y = [1 3 9 5 7 8 1 3 2 9 2]';
vec_bin_edges = 0:9;
hist3([vec_x vec_y], 'Edges', {vec_bin_edges, vec_bin_edges});
mat_joint = hist3([vec_x vec_y], 'Edges', {vec_bin_edges, vec_bin_edges});
figure
bar3(mat_joint, 1);
axis tight

为了证明我的问题,我做了两个数字的两张照片:

这是hist3([vec_x vec_y], 'Edges', {vec_bin_edges, vec_bin_edges});

的输出

这是bar3(mat_joint, 1);的输出 enter image description here

正如您所看到的,bar3函数并不像hist3那样将数据值真正“分档”,因此条形图的位置会略微移动。我现在的问题是,是否可以使bar3情节看起来与hist3情节完全相同。我这样做的动机是,我需要修改mat_joint矩阵并再次绘制它,这是使用hist3无法实现的。

编辑:不同颜色并不重要,只是仓位

1 个答案:

答案 0 :(得分:1)

好吧,我明白了:

set(gca, 'xtick', [1.5:1:10.5]);
set(gca, 'ytick', [1.5:1:10.5]);
vec_bin_labels = 1:10;
vec_string_bin_labels = reshape(cellstr(num2str(vec_bin_labels(:))), size(vec_bin_labels));
set(gca, 'xticklabel', vec_string_bin_labels);
set(gca, 'yticklabel', vec_string_bin_labels);