Matlab Hist3/Imagesc 轴缩放

Matlab Hist3/Imagesc Axis Scaling

我有 2 个数据数组 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] 并且它不反映每个 xy 的实际值。如何固定轴 x,y 范围并将实际值保持在固定轴范围内?

我也试过在调用 imagesc(values2) 之后在单独的调用中使用 xlimylim 但这也不起作用 - 它在非常小的区域绘制我的数据并在图像区域周围留下很多白色 space。

感谢您的帮助!!

我已经尝试了下面 link 的 "checked" 响应来到达我现在的位置: Scatter plot with density in Matlab

使用 answer you referenced 你可以写:

% 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(:)x(:,n).

这将给出: