用python实现热力图可视化
在数据分析过程中,有时候需要一些数据以热力图的形式进行显示出来,从而能够更加直观地查看分析数据。下面以实际情况为例,展示热力图在两种不同情况下的应用。
一、识别图片中行人的关注点,并绘制热力图
我们在做超市商品卖场力分析的时候,可以通过分析超市密集人群的关注点,生成热力图,给厂商直观的视觉感受。步骤分为以下几步:
1、首先用行人检测技术检测出超市场景中的顾客,再用眼动追踪技术得到顾客眼睛凝视点的中心坐标。
2、将所有凝视点的中心坐标放入一个list类型的变量data中,即data = [[x1,y1],[x2,y2] …],或者data=[[x1,y1,z1],[x2,y2,z2]…],其中z点代表(x,y)点所在位置的权重。
3、绘制热力图,并将热力图加权叠加到原图上。
简单代码展示如下:
import cv2
import numpy as np
from PIL import Image
from pyheatmap.heatmap import HeatMap
def apply_heatmap(image,data):'''image是原图,data是坐标''''''创建一个新的与原图大小一致的图像,color为0背景为黑色。这里这样做是因为在绘制热力图的时候如果不选择背景图,画出来的图与原图大小不一致(根据点的坐标来的),导致无法对热力图和原图进行加权叠加,因此,这里我新建了一张背景图。'''image1=cv2.imread(image)background = Image.new("RGB", (image1.shape[1], image1.shape[0]), color=0)# 开始绘制热度图hm = HeatMap(data)hit_img = hm.heatmap(base=background, r = 100) # background为背景图片,r是半径,默认为10hit_img = cv2.cvtColor(np.asarray(hit_img),cv2.COLOR_RGB2BGR)#Image格式转换成cv2格式overlay = image1.copy()alpha = 0.5 # 设置覆盖图片的透明度cv2.rectangle(overlay, (0, 0), (image1.shape[1], image1.shape[0]), (255, 0, 0), -1) # 设置蓝色为热度图基本色蓝色image2 = cv2.addWeighted(overlay, alpha, image1, 1-alpha, 0) # 将背景热度图覆盖到原图image3 = cv2.addWeighted(hit_img, alpha, image2, 1-alpha, 0) # 将热度图覆盖到原图cv2.imshow('ru',image3)cv2.imwrite('rtj91.jpg',image3)cv2.waitKey(0)return image3
if __name__=='__main__':apply_heatmap('8.jpg',[[600,436,30],[296,416,50],[270,400,32],[280,426,10],[580,440,30],[360,430,36],[540,460,50],[482,469,5],[400,463,8],[320,453,26],[200,1140,20],[180,1136,10],[120,1130,10],[90,1126,20]])#数据来自通过眼动追踪技术生成的顾客凝视点中心坐标
原图(取自佳乐家超市):
经过处理后生成的热力图:
可以看出,顾客的关注点主要在带铁罐和塑料盒装的德芙巧克力上,其中,放在货架高处(与一般顾客人眼高度相近的位置)的德芙巧克力要比放在货架底部位置的德芙巧克力受到的关注点要更高一些。
二、在地图上进行热力图绘制
在热力图绘制过程中,有很多种情况是直接在中国地图或者世界地图上甚至于是在某个城市的地图上进行热力图绘制,这时可以用到folium,folium是python的一个用来绘制地图,并在地图上生成热力图的工具。
例:今年国庆节以来有不少朋友向我买莱阳梨,这其中大多数的莱阳梨是以邮寄的形式寄出,因此,可以通过买家给出的地址得到相关地址的经纬度,从而在中国地图上生成热力图,显示出莱阳梨售往了哪些地方。
import numpy as np
import pandas as pd
import folium
from folium.plugins import HeatMap
posi=pd.read_excel('laiyangli.xlsx')#读取文件中的信息
num=18 #买家数量
lat=np.array(posi['lat'][0:num])#选取纬度信息
lon=np.array(posi['lon'][0:num])#选取经度信息
data1=[[lat[i],lon[i]] for i in range(num)]#生成热力图需要的经纬度坐标
map_osm=folium.Map(location=[35,110],zoom_start=5)#绘制Map,开始缩放程度是5倍中国
HeatMap(data1).add_to(map_osm)#将热力图添加到前面建立的Map里
file_path=r"D:\Files\python\ditu\lyl.html"#地图生成路径,其文件类型为html格式
map_osm.save(file_path)#保存html文件,没网不能用,只能在有网的时候打开
结果:
通过热力图显示买家所处的位置,一目了然!
用python实现热力图可视化相关推荐
- Python使用matplotlib可视化相关性分析热力图图heatmap、使用seaborn中的heatmap函数可视化相关性热力图(Correllogram)
Python使用matplotlib可视化相关性分析热力图图heatmap.使用seaborn中的heatmap函数可视化相关性热力图(Correllogram) 目录
- 可视化篇(五)——— python绘制热力图及案例
可视化篇(五)--- python绘制热力图及案例 摘要 效果图 python代码 摘要 本文演示了如何通过python绘制热力图,并给出了其应用于展示数据之间相关性的案例供读者参考. 效果图 pyt ...
- Python 基于pyecharts自定义经纬度热力图可视化
背景 在业务数据统计分析中基本都会涉及到各省区的分析,数据可视化是数据分析的一把利器,这些省区的数据一般会用地图可视化出来,这样一些规律可以被一面了然发现 地图有很多可视化类型,比如:基本地理图.热力 ...
- python用excel数据做热力图_7行代码 Python热力图可视化分析缺失数据处理-Python 实用宝典...
Python热力图寻找缺失数据 你有没有遇到一种情况,处理一张很大的csv表格的时候很难找到表格中每一列的缺失数据,或者说处理速度非常慢 ?当然如果你的Excel水平非常高,这个可能不会成为你的问题, ...
- Python的数据分析可视化十种技能总结
常见的可视化试图列举 可视化视图可以分成4大类:比较.联系.构成和分布.他们的特点如下: 1.比较:比较数据之间的各类别的关系,或者是他们随着时间的变化趋势,比如折线图: 2.联系:查看两个或者两个以 ...
- 厉害了,用Python绘制动态可视化图表,并保存成gif格式
作者 | 俊欣 来源 | 关于数据分析与可视化 最近有粉丝问道说"是不是可以将这些动态的可视化图表保存成gif图",小编立马就回复了说后面会写一篇相关的文章来介绍如何进行保存gif ...
- Python使用matplotlib可视化多个不同颜色的折线图、通过FontProperties为可视化图像配置中文字体可视化、并指定字体大小
Python使用matplotlib可视化多个不同颜色的折线图.通过FontProperties为可视化图像配置中文字体可视化.并指定字体大小 目录
- Python使用matplotlib可视化气泡图、并使用encircle函数自定义多边形圈定可视化图像中的指定区域(Bubble plot with Encircling)
Python使用matplotlib可视化气泡图.并使用encircle函数自定义多边形圈定可视化图像中的指定区域(Bubble plot with Encircling) 目录
- Python使用matplotlib可视化散点图、使用seaborn中的lmplot函数可视化不同分组散点图的最优线性回归拟合曲线(Scatter plot with regression line)
Python使用matplotlib可视化散点图.使用seaborn中的lmplot函数可视化不同分组散点图的最优线性回归拟合曲线(Scatter plot with linear regressio ...
最新文章
- R语言ggplot2可视化条形图(bar plot)、配置因子变量的全局填充色方案、这样不同数据集相同因子的填充色具有一致性(Fix colors to factor levels)
- 云平台需要开发的底层功能
- 腾讯云全面更新数据智能服务全景图!
- SQL的四种连接-左外连接、右外连接、内连接、全连接(转)
- JMeter记录篇2——性能测试基础(2)
- 智能快递柜10月1日起按新规管理
- Linux的巡检命令
- 拓端tecdat|python用遗传算法 神经网络 模糊逻辑控制算法对彩票乐透数据进行预测
- Spring源码解析
- 明小子3.5检测网站应用
- 计算机显卡驱动不匹配,显卡驱动与系统不兼容?尤其是老电脑
- 楠哥Java SE总结详细笔记
- cad用计算机怎么计算坐标,CAD坐标里能输入公式吗?
- java盖金字塔的游戏,最强大脑积木金字塔
- 把不同的pdf文档合并在一个pdf文件中,一次批量打印
- 通用Nginx优化配置
- d191虚拟服务器,dlink无线路由器的端口映射设置教程
- 程序验证(五):一阶理论的过程
- 俄罗斯方块源码分享 html+css+js
- 原生js实现移动动画,变化动画