Matlab Hist3 / Imagesc Axis Scaling

时间:2016-08-22 18:00:57

标签: matlab histogram scale matlab-figure axis

我有两个数据阵列xy都是22250乘54,我正在尝试使用hist3imagesc制作密度图每个x(:,n)y(:,n)n = 1:54

我正在使用imagesc(values2)其中:

values2 = hist3([x(:) y(:)],[round(max(x)) round(max(y)) ]);

用作我的参数来绘制54 xy值中的每一个以获得唯一的轴范围,并且它工作正常。但是,当我为values2设置固定的整数值时,例如

values2 = hist3([x(:) y(:)],[50 50 ]);

xy的54列中的每一列的实际值最终会缩放到[50 50]参数,或者如果我使用[100 100]并且它不反映ACTUAL每个xy的值。如何修复轴x,y范围并将实际值保持在固定轴范围内?

在调用xlim后,我也尝试在单独的调用中使用ylimimagesc(values2),这也不起作用 - 它将我的数据绘制在一个非常小的区域中并离开图像区域周围有很多空白区域。

感谢您的帮助!

我尝试过以下链接中的“已检查”回复,以便到达我现在的位置: Scatter plot with density in Matlab

1 个答案:

答案 0 :(得分:0)

使用answer you referenced,您可以写:

dArray.length

请注意,如果% some arbitrary data: x = randi(30,30,54); y = randi(61,30,54)-21; % constant values for every n: nbins = [round(range(y(:))) round(range(x(:)))]+1; x_lim = [min(x(:)) max(x(:))]; y_lim = [min(y(:)) max(y(:))]; % plotting: for n = 1:9 [values2, centers] = hist3([x(:,n) y(:,n)],nbins); subplot(3,3,n) % this is just for compact demonstration h = imagesc(centers{:},values2.'); title(num2str(n)) xlim(x_lim) % keeping the x-axis limits constant ylim(y_lim) % keeping the y-axis limits constant axis xy end x(:,n)中的数据的范围小于y(:,n)y(:),则您可能会获得绘图的区域,如本例所示

将给出: imagesc hist