Matlab画热度图,某地人流密度热力图

 帮一位朋友实现以下matlab可视化数据统计,即将所采集到的数据通过热度图来标识,以区分某地段人流的密集程度。需要有三维以及二维两种视角


实现效果如下图所示

Matlab画热度图,某地人流密度热力图_第1张图片


参数说明:X轴和Y轴建立在二维坐标系上基础之上,Z轴为统计计算得出的密度值;在实际场景下,可将X轴和Y轴使用经纬度替代,以便定位一个相对较大的区域。

%----------------------------
clear
clear all
%一列x一列y一列z,分别为归一化后的地铁站长度,宽度,以及计算得出的人流密度值
%归一化代码我写的是C++的,不做归一化不影响使用
%载入文件,获取x的值
fidx=fopen('C:\Users\Administrator.SC-201604111342\Desktop\x.txt','r');
x=fscanf(fidx,'%lf');
%载入文件获取y的值
fidy=fopen('C:\Users\Administrator.SC-201604111342\Desktop\y.txt','r');
y=fscanf(fidy,'%lf');
%载入文件,获取z的值
fidz=fopen('C:\Users\Administrator.SC-201604111342\Desktop\z.txt','r');
z=fscanf(fidz,'%lf');
%取x的最大值
maxx=max(x);
%取x的最小值
minx=min(x);
%同x
maxy=max(y);
miny=min(y);
%生成网格
[X,Y]=meshgrid(linspace(minx,maxx),linspace(miny,maxy));
%插入人员密度值
Z=griddata(x,y,z,X,Y,'v4');
subplot(1,2,1);
%生成三维面
mesh(X,Y,Z)
hold on
%在三维面上画出人员密度值,高低峰岁值的大小而改变,颜色也是
plot3(x,y,z,'r.')
hold on
%坐标命名
xlabel('X-地铁站长度');
ylabel('Y-地铁站宽度');
zlabel('Z-人员密度值');
%插入颜色条
colorbar
%二维视角
subplot(1,2,2);
%生成三维面
mesh(X,Y,Z)
hold on
%在三维面上画出人员密度值,高低峰岁值的大小而改变,颜色也是
plot3(x,y,z,'r.')
hold on
view(2);
%坐标命名
xlabel('X-地铁站长度');
ylabel('Y-地铁站宽度');
zlabel('Z-人员密度值');
%插入颜色条
colorbar





你可能感兴趣的:(学习心得)