1. 程式人生 > >Matlab畫熱度圖,某地人流密度熱力圖

Matlab畫熱度圖,某地人流密度熱力圖

 幫一位朋友實現以下matlab視覺化資料統計,即將所採集到的資料通過熱度圖來標識,以區分某地段人流的密集程度。需要有三維以及二維兩種視角

實現效果如下圖所示


引數說明: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