我有两个数据阵列x
和y
都是22250乘54,我正在尝试使用hist3
和imagesc
制作密度图每个x(:,n)
和y(:,n)
对n = 1:54
。
我正在使用imagesc(values2)
其中:
values2 = hist3([x(:) y(:)],[round(max(x)) round(max(y)) ]);
用作我的参数来绘制54 x
和y
值中的每一个以获得唯一的轴范围,并且它工作正常。但是,当我为values2
设置固定的整数值时,例如
values2 = hist3([x(:) y(:)],[50 50 ]);
x
和y
的54列中的每一列的实际值最终会缩放到[50 50]参数,或者如果我使用[100 100]并且它不反映ACTUAL每个x
和y
的值。如何修复轴x,y
范围并将实际值保持在固定轴范围内?
在调用xlim
后,我也尝试在单独的调用中使用ylim
和imagesc(values2)
,这也不起作用 - 它将我的数据绘制在一个非常小的区域中并离开图像区域周围有很多空白区域。
感谢您的帮助!
我尝试过以下链接中的“已检查”回复,以便到达我现在的位置: Scatter plot with density in Matlab
答案 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(:)
,则您可能会获得绘图的区域,如本例所示