Matlab畫熱度圖,某地人流密度熱力圖
阿新 • • 發佈:2019-02-12
幫一位朋友實現以下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