前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >看完这篇,还有你不会画的热力图吗?

看完这篇,还有你不会画的热力图吗?

作者头像
巴山学长
发布于 2019-10-22 07:56:01
发布于 2019-10-22 07:56:01
5.7K07
代码可运行
举报
文章被收录于专栏:巴山学长巴山学长
运行总次数:7
代码可运行
之前有不少小伙伴在公众号里问怎么绘制热力图,今天就给大家说道说道。热力图(Heat Map),最初的定义是指一个以颜色变化来显示数据的矩阵,逐步演化成为用颜色变化来表征某种数据经过降维处理后的变化情况。热力图在各行各业都有着广泛地应用,比如地图热力图、网页/APP热力图以及业务数据热力图等。

基于以上概念,不难理解,绘制热力图所需要的数据往往是3维或者更高维度的,下面给出三维的两种常见的数据样本格式:

格式一、点型数据,即知道三维空间的若干个数据点(x,y,z),其中z为待表征量:

格式二、网格型数据,网格型数据本质上还是点型数据,只是在样本数据预处理时有细微区别,同样z为待表征量:

清楚了样本数据格式后,以人口密度热力图来说明热力图的制作原理,下图是从腾讯位置大数据(heat.qq.com)上截取截取的北京市朝阳区欢乐谷2019年10月18日17:00的人口密度图。

为了绘制上面一张图,首先要获取腾讯地图使用者的位置(经度x, 纬度y),统计规定时间内在某个位置区域使用腾讯地图的人数,将统计的人数除以位置区域的面积即可得到该区的人口密度z。现在数据点(x,y,z)均已获取,不过数据离散性很大。如果只是单纯地绘制所得到的数据,那将是一个个不同颜色的离散点。为了最大化利用获取的数据,使得更具有宏观参考价值,对获取的数据采用数学处理方法进行数据扩充是很有必要的,扩充之后就能实现全域观察,最后形成了上图。

通过上面的简述,相信小伙伴们对热力图的绘制原理应该有所了解了吧。要在二维空间里绘制三维数据,有没有什么办法呢?答案是肯定的,那就是把第三维用另外一种形式来表征,而颜色就是最合适的候选者,将第三维数据与颜色值一一对应,这样就可以在二维空间完成三维数据的绘制。

下面以第一种样本数据格式来演示热力图的绘制:

代码语言:javascript
代码运行次数:0
运行
复制
clc;clear;close all;
% 定义点(x,y,z)
x = randn(50,1);
xmax = max(x);
xmin = min(x);
y = randn(50,1);
ymax = max(y);
ymin = min(y);
z = exp(sin(x.^2)) + exp(cos(y.^2));
N = 500; % 每个维度的数据点数
% 网格化x,y二维空间
[X,Y] = meshgrid(linspace(xmin,xmax,N),linspace(ymin,ymax,N));
% 采用插值法扩展数据,可用方法有'linear'(default)|'nearest'|'natural'|'cubic'|'v4'|
Z = griddata(x,y,z,X,Y,'v4');
%% 等高线法
figure('NumberTitle','off','Name','等高线法','Color','w','MenuBar','none','ToolBar','none');
contourf(X,Y,Z,N, 'LineColor','none');
colormap('jet');
colorbar;
axis off;
%% 投影图法
figure('NumberTitle','off','Name','投影图法','Color','w','MenuBar','none','ToolBar','none');
surf(X,Y,Z,'LineStyle','none');
xlim([min(X(:)) max(X(:))]);
ylim([min(Y(:)) max(Y(:))]);
axis off;
colormap('jet');
colorbar;
shading interp;
view(0,90);
%% imagesc法
figure('NumberTitle','off','Name','imagesc法','Color','w','MenuBar','none','ToolBar','none');
% 因为图像坐标和笛卡尔坐标起始位置不一样,需要上下翻转
imagesc(flipud(Z));
colormap('jet');
colorbar;
axis off;
%% pcolor法
figure('NumberTitle','off','Name','pcolor法','Color','w','MenuBar','none','ToolBar','none');
pcolor(X,Y,Z);
colormap('jet');
colorbar;
shading interp;
axis off;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Python爬虫的基本原理
我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,网站的数据就可以被抓取下来了。
仲君Johnny
2024/02/03
4260
Python爬虫的基本原理
代理的基本原理
我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如403 Forbidden,这时候打开网页一看,可能会看到“您的IP访问频率太高”这样的提示。出现这种现象的原因是网站采取了一些反爬虫措施。比如,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,这种情况可以称为封IP。 既然服务器检测的是某个IP单位时间的请求次数,那么借助某种方式来伪装我们的IP,让服务器识别不出是由
崔庆才
2018/06/25
2.1K0
HTTP基本原理
在本节我们会详细了解 HTTP 的基本原理,了解在浏览器中敲入一个 URL 到获取网页内容发生了一个怎样的过程,了解了这些内容,有助于去进一步了解爬虫的基本原理。 1. URI、URL 在了解 HTTP 之前我们先了解一下 URI 和 URL。我们经常会听到 URI 和 URL 两个术语,URI 全称为 Uniform Resource Identifier,即统一资源标志符,URL 全称为 Universal Resource Locator,即统一资源定位符。 举例来说,https://github.
崔庆才
2018/04/04
1.4K0
HTTP基本原理
Python爬虫http基本原理
在本节中,我们会详细了解 HTTP 的基本原理,了解在浏览器中敲入 URL 到获取网页内容之间发生了什么。了解了这些内容,有助于我们进一步了解爬虫的基本原理。
仲君Johnny
2024/02/02
2490
Python爬虫http基本原理
一文带你了解Python爬虫(一)——基本原理介绍
1. 企业生产的用户数据: 大型互联网公司有海量用户,所以他们积累数据有天然的优势。有数据意识的中小型企业,也开始积累的数据。 2. 数据管理咨询公司: 通常这样的公司有很庞大的数据采集团队,一般会通过市场调研、问卷调查、固定的样本检测, 和各行各业的公司进行合作、专家对话(数据积累很多年了,最后得出科研结果)来采集数据。 3. 政府/机构提供的公开数据: 政府通过各地政府统计上报的数据进行合并;机构都是权威的第三方网站。 4. 第三方数据平台购买数据: 通过各个数据交易平台来购买各行各业需要的数据,根据获取难度不同,价格也会不同。 5. 爬虫爬取数据: 如果市场上没有我们需要的数据,或者价格太高不愿意买, 那么就可以招/做一个爬虫工程师,从互联网上定向采集数据。
诡途
2020/10/16
4.1K0
数据采集技术python网络爬虫_精通Python网络爬虫
网络爬虫(Crawler)又称网络蜘蛛,或者网络机器人(Robots). 它是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。换句话来说,它可以根据网页的链接地址自动获取网页内容。如果把互联网比做一个大蜘蛛网,它里面有许许多多的网页,网络蜘蛛可以获取所有网页的内容。 爬虫是一个模拟人类请求网站行为, 并批量下载网站资源的一种程序或自动化脚本。
全栈程序员站长
2022/09/27
1.9K0
数据采集技术python网络爬虫_精通Python网络爬虫
爬虫为啥需要大量的ip_简述网络爬虫的工作原理
爬虫工作者在试用爬虫进行数据搜集的过程中经常会遇到这样的情况,刚开始的时候爬虫的运行情况是正常的,数据的抓取状况也在有条不紊的进行着,然而可能你一眼照顾不到就会出现错误,比如403 Forbidden,这时候你打开网页的话,网页上面会提示你,“您的IP访问频率太高”这样的字眼。出现这种现象的原因就是被访问网站采取了反爬虫机制,比如,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,这种情况可以称为封IP。
全栈程序员站长
2022/11/10
4910
Python3网络爬虫实战-19、代理基
我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么的美好,然而一杯茶的功夫可能就会出现错误,比如 403 Forbidden,这时候打开网页一看,可能会看到“您的 IP 访问频率太高”这样的提示。出现这样的现象的原因是网站采取了一些反爬虫的措施,比如服务器会检测某个 IP 在单位时间内的请求次数,如果超过了这个阈值,那么会直接拒绝服务,返回一些错误信息,这种情况可以称之为封 IP,于是乎就成功把我们的爬虫禁掉了。
py3study
2020/01/03
6040
初识爬虫必须要了解的基本原理
在写爬虫之前,我们还需要了解一些基础知识,如 HTTP 原理、网页的基础知识、爬虫的基本原理 、 Cookies 的基本原理等。
数据森麟
2021/03/09
3080
初识爬虫必须要了解的基本原理
Python爬虫之requests模块了解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VTDA4Hje-1599297042880)(.\images\requests-3-2-1-4.png)]
海仔
2020/09/08
1.7K0
Python爬虫之requests模块了解
Session和Cookies的基本原理
在浏览网站的过程中,我们经常会遇到需要登录的情况,有些页面只有登录之后才可以访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就需要重新登录。还有一些网站,在打开浏览器时就自动登录了,而且很长时间都不会失效,这种情况又是为什么?其实这里面涉及Session和Cookies的相关知识,本节就来揭开它们的神秘面纱。 一、静态网页和动态网页 在开始之前,我们需要先了解一下静态网页和动态网页的概念。这里还是前面的示例代码,内容如下: <!DOCTYPE html> <html> <head>
崔庆才
2018/04/08
9420
Session和Cookies的基本原理
干货|普通反爬虫机制的应对策略
爬虫与反爬虫,这相爱相杀的一对,简直可以写出一部壮观的斗争史。而在大数据时代,数据就是金钱,很多企业都为自己的网站运用了反爬虫机制,防止网页上的数据被爬虫爬走。然而,如果反爬机制过于严格,可能会误伤到
灯塔大数据
2018/04/08
1.8K0
干货|普通反爬虫机制的应对策略
一篇万字博文带你入坑爬虫这条不归路 【万字图文】
大家好,又见面了,我是你们的朋友全栈君。 👻最近,很多粉丝私信我问——爬虫到底是什么?学习爬虫到底该从何下手?👻 😬其实,我想说的也是曾经的我身为小白的时候某些大牛对我说过的——很多时候我们都有一颗想要学习新知识的心,却总是畏惧于对想要学习内容的无知,这也是多数人失败甚至后悔终身的:因为他们从来没有开始过!😬 😜借一位几年前带我入坑的前辈的话——坑就在你面前,别总是犹豫徘徊,大胆一点:向前一步,入了这个坑,莽着头就是往前冲,别多想,别回头,终有一天——>你也会成为别人的前辈!😜 ---- 今日份鸡
全栈程序员站长
2022/07/22
2670
一篇万字博文带你入坑爬虫这条不归路 【万字图文】
一、爬虫基本原理
一 爬虫是什么 #1、什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样。 #2、互联网建立的目的? 互联网的核心价值在于数据
用户1214487
2018/01/24
8060
一、爬虫基本原理
爬虫学习之第一章网络请求
HTTP协议:全称是HyperText Transfer Protocol,中文意思是超文本传输协议,是一种发布和接收HTML页面的方法。服务器端口号是80端口。 HTTPS协议:是HTTP协议的加密版本,在HTTP下加入了SSL层。服务器端口号是443端口。
py3study
2020/01/15
7210
python爬虫针对需要登陆操作的技巧分析
在日常爬虫中我们经常会遇到一些目标网站需要带上cookie才能获取数据,cookie指某些网站为了辨别用户身份、进行sessionn跟踪而储存在用户本地终端上的数据(通常经过加密)。
小白学大数据
2023/05/05
3780
爬虫之爬虫简介与request请求库
爬虫协议:规定了什么东西网站让爬,什么东西不让爬,查看方式:网址/robots.txt 如
GH
2020/03/19
1.2K0
Python学习笔记HTTP基本原理
请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent 等。
幻影龙王
2021/08/31
3700
Python学习笔记HTTP基本原理
python 爬虫与反爬虫
案例:雪球网 返回的就是403403 Forbidden. Your IP Address:xxx.xxx.xxx.xxx.但是当我们这样写:
用户5760343
2019/10/21
2.8K0
用Puppeteer点击与数据爬取:实现动态网页交互
在数据采集领域,传统的静态网页爬虫方式难以应对动态加载的网页内容。动态网页通常依赖JavaScript加载数据,用户需要与页面交互才能触发内容显示。因此,我们需要一种更智能的爬虫技术。Puppeteer作为强大的浏览器自动化工具,能模拟用户操作、加载动态数据、实现点击操作和内容采集。此外,为了提高抓取成功率并避免IP封禁,结合代理IP技术必不可少。本文将介绍如何使用Puppeteer和代理IP抓取51job招聘信息,同时从招聘信息的价值、市场应用以及大数据分析角度进行拓展。
jackcode
2024/11/06
2540
用Puppeteer点击与数据爬取:实现动态网页交互
相关推荐
Python爬虫的基本原理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档