在 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)
,就可以解决问题。虽然我的例子不是特别有趣,但希望这应该能让你开始朝着你想要的美学目标迈进。
希望标题充分描述了我的问题。基本上,我在 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)
,就可以解决问题。虽然我的例子不是特别有趣,但希望这应该能让你开始朝着你想要的美学目标迈进。