在 Matlab 中绘制密度图时显示正确的轴值

Exhibiting the correct axes values when making plot with density in Matlab

我正在尝试用复平面中随机二次一元多项式的零点密度绘制一个图。事实上,我在密谋!但是只有一个小细节让我烦恼:轴的值与图中的点不匹配。这是我的代码。

n=2;
p = [1 random('Uniform', -1, 1, [1,n])]
roots(p)
z = zeros(0);
n = 2;
for j=1:10000
    p = [1 random('Uniform', -1, 1, [1,n])];
    R = roots(p);
    z = [ z, R.' ];
end
Re = real(z);
Im = imag(z);
[values, centers] = hist3([Im(:) Re(:)],[1000 1000]);
imagesc(centers{:}, values,[0,10]);
colorbar
axis equal
axis xy
cmap = summer(max(values(:)));
cmap(1:1,:) = 0;
colormap(cmap);

现在这是这段代码生成的图。

你可以试试这段代码,检查max(Re)和max(Im),它们分别对应实部(x轴)和虚部(y轴)的最大值。我有 max(Re) = 1.6076(它总是接近 1.5)和 max(Im) = 0.9993(它总是接近 1)。这些值与情节不符,似乎是相反的。

如果我尝试散点函数(失去密度和所有漂亮的视觉效果),我有正确的值。以下命令生成下图。

scatter(Re(1,:), Im(1,:),'.')

这清楚地表明第一个图实际上(没有像我最初想的那样旋转)正确,除了轴值。我需要帮助来解决这个问题。谢谢。

PS: 制作这个情节的命令我在答案 here 中得到。注意那里的评论。我明确要求解决这个问题并得到了一个。给定的解决方案在某些情况下确实有效,但在这种情况下失败了,我不知道为什么。

我相信你要找的应该是:

imagesc(centers{[2,1]}, values,[0,10]);

顺便说一句,你没有发现另一个问题post是因为样本图像都或多或少是正方形的。