在 MATLAB 中的同一图上覆盖 make-up 等高线图矩阵的数据点

Overlay the data points which make-up a contour plot matrix on the same plot in MATLAB

希望标题充分描述了我的问题。基本上,我在 MATLAB 中使用 contourf (x,y,z) 函数生成等高线图,其中 x 和 y 是不同长度的向量,z 是维度为 x 乘以 y 的数据矩阵。 contourf 图很好,但是,我希望用矩阵 z 中的实际数据点覆盖此图。我曾尝试使用散点函数,但收到一条错误消息,通知我 X 和 Y 必须是相同长度的向量——但事实并非如此。还有其他方法可以实现吗?

提前感谢任何help/suggestions!

我觉得meshgrid应该能帮到你。

z = peaks;               %// example 49x49 z data
x = 1:20;
y = 1:49;
z = z(y,x);              %// make dimensions not equal so length(x)~=length(y)
[c,h] = contourf(x,y,z); 
clabel(c,h); colorbar; 

[xx,yy]=meshgrid(x,y);   %// this is what you need
hold on;
plot(xx,yy,'k.');        %// overlay points on contourf

注意 plot 足以代替 scatter。如果您坚持,例如 scatter(xx(:),yy(:),10),就可以解决问题。虽然我的例子不是特别有趣,但希望这应该能让你开始朝着你想要的美学目标迈进。