MATLAB中(x,y,z)点的热图或等高线图,没有网格函数可能吗?

时间:2018-02-06 23:36:16

标签: matlab heatmap contour

我一直在这里坐了好几个小时试图弄明白这一点没有希望。我希望你能帮助我。我在x-y平面上有(x,y)点,每个(x,y)点都有一定的分配值,你可以把它想象成它的z分量

我能够通过简单的matlab函数绘制这些点

text(position(1),position(2),num2str(RSRP))
通过这样做,我获得了下图

我的问题是:我希望根据标记值在热图中看到轮廓或颜色,例如在此图中,将存在点(-400,190)附近的某个计数值,其值为-117标记为具有特定颜色,而标记值为-106的点(-300,200)将具有另一个轮廓。

初步想法:

将其带到(x,y,z)平面,然后投影到2D。但后来我有问题,因为对于每个(x,y)我有一个值z。我没有相应网格的meshgrid函数。非常困惑。谢谢

enter image description here

我想要像下面的那样

enter image description here

2 个答案:

答案 0 :(得分:1)

实际上,我并不完全理解你试图解决的问题,顺便说一下,我会发布我的航行想法,希望可能有所帮助。

在下面的代码中,我使用scatter绘图来表示与您的数字相似的数据。

clear 
x = random('Normal',1,10,1,100);
y = random('Normal',1,10,1,100);
[t t_idx] = sort(x);
x = x(t_idx);
c = linspace(1,100,length(x));
scatter(x,y,[],c,'*')

enter image description here 如果这不是你想要的。请添加带有相关代码的数据集示例,这将有助于我们更好地理解您的问题。

答案 1 :(得分:0)

这个功能对你有帮助吗? https://www.mathworks.com/help/matlab/ref/griddata.html

它将随机x,y位置的数据插入均匀网格。

我对他们给出的例子感到不满,并做了以下事情,

x = rand([1,50]).*100;
y = rand([1,50]).*100;
%%% z is, say, three gaussians in the xy plane
v = exp(-((x-20).^2+(y-20).^2)./(2*10^2)) + exp(-((x-70).^2+(y-70).^2)./(2*10^2)) + exp(-((x-20).^2+(y-70).^2)./(2*20^2));  
[xq,yq] = meshgrid(1:0.5:100, 1:0.5:100);
vq = griddata(x,y,v,xq,yq);
contourf(xq,yq,vq)

这给出了以下内容......

contour plot from random x,y points

不确定数据是什么/这个图的目标我不能评论以这种方式插入数据是多么“公平”,但我也用x,y点做了这个图更多密集(长度为200对比50的矢量)和均匀间隔以显示z“应该”看起来像。

contour plot from more dense and evenly spaced points

正如我们可能已经猜到的那样,插值轮廓图得到了一些但不是所有的特征。最好使用Mohammad的分散建议,因为这只代表您拥有的信息,但同样,这取决于您,当然取决于您的可视化的类型/目的!

为链接的图片道歉/没有评论,我是新来的(这是我的第一个答案!)所以我无法评论或嵌入图片。希望无论如何都有帮助!