热力图科普:数据可视化的利器
hello大家好,俺是没事爱瞎捣鼓又分享欲爆棚的叶同学!!!
日常闲扯
哎呀,第一天上完课,给俺的感觉是(热和惊喜),热是真热,从出租屋走到教学楼给我整的汗流浃背的了,然后上午班级的空调也不是很给力,所有很。。。,但也有惊喜哈,虽然我搬出来住了,不能和他们一起上课,但下课他们还是来找我了,到我这边来了,下午还帮我占了座位,还是挺惊喜开心的哈,白天也是忙碌起来了,生活也变得不那么无所事事和无聊了!好了每次介绍正文前都闲扯一段好似成了俺的习惯了哈哈哈哈!下面我们来进入正题了
进入正题
在数据科学和数据分析的世界里,热力图(Heatmap)是一种常见且强大的数据可视化工具。无论是展示数据之间的相关性,还是显示地理数据,热力图都能通过色彩的渐变来直观地呈现数据的分布和趋势。俺将带你们了解什么是热力图,如何创建它,以及它的应用场景。
什么是热力图?
热力图是一种以颜色变化为基础的图形表示形式,通常用于显示数据集中的数值大小或数据之间的关系。颜色的深浅通常代表数据的大小或强度,例如,颜色越深表示数值越大或关系越强。
热力图的基本组成部分包括:
- 行和列:通常代表数据集的不同维度或变量。
- 颜色编码:用来表示数值或关系的强弱,常见的颜色编码包括从浅色到深色的渐变,例如从浅黄色到深红色。
热力图的应用场景
-
相关性分析:在机器学习或统计分析中,热力图常用于显示特征之间的相关性。通过观察颜色的深浅,分析人员可以快速识别出哪些特征之间存在较强的线性关系,从而为模型构建提供参考。
例如,在金融数据分析中,可以通过热力图展示不同股票的价格之间的相关性,从而帮助投资者做出更明智的投资决策。
-
地理数据展示:在地理信息系统(GIS)中,热力图常用于显示特定区域内的数据信息,如人口密度、气温变化、犯罪率等。通过将地理位置与颜色对应,热力图可以直观地展示出热点区域。
例如,在流行病学研究中,热力图可以用来显示某一疾病在不同地区的传播情况,从而为防控措施提供参考。
-
网站分析:在用户体验设计中,热力图被用于分析用户在网页上的行为。通过颜色展示用户的点击频率或鼠标停留时间,设计师可以更好地理解用户的使用习惯,优化页面布局。
-
时间序列数据分析:热力图还可以用于展示时间序列数据的变化,如股票价格波动、气温变化等。通过将时间维度与颜色结合,分析人员可以清晰地看到数据随时间的变化趋势。
如何创建热力图?
创建热力图的方式有很多,常用的工具包括Python的seaborn
和matplotlib
库、Excel、Tableau等。这样吧!我们还是用我们最喜欢的“某者荣耀”来举例子!以下是使用Python创建一个简单相关性热力图的示例:
1. 导入必要的库
首先,我们需要导入Python中用于数据处理和绘图的常用库——Pandas、Matplotlib和Seaborn。
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
matplotlib.pyplot
:用于绘制各种图形的基础库。seaborn
:基于Matplotlib的高级数据可视化库,可以更加简洁地绘制复杂图形。pandas
:用于数据处理与分析的库,特别适合处理表格数据。
2. 设置中文显示与解决负号显示问题
由于Matplotlib默认字体不支持中文字符,所以我们需要手动设置字体以支持中文显示。同时,为了避免负号无法正确显示的问题,也需要进行相关设置。
# 设置字体为SimHei以支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.sans-serif'] = ['SimHei']
:将字体设置为黑体(SimHei),以确保图表中的中文可以正常显示。plt.rcParams['axes.unicode_minus'] = False
:解决坐标轴负号显示问题。
3. 构建模拟的英雄胜率数据
接下来,我们将构建一个模拟的《王者荣耀》英雄胜率数据框,数据包含三个英雄(英雄A、英雄B、英雄C)在不同段位下的胜率。
# 模拟英雄胜率数据
data = pd.DataFrame({
'段位': ['青铜', '白银', '黄金', '铂金', '钻石', '星耀', '王者'],
'英雄A': [0.45, 0.50, 0.52, 0.54, 0.55, 0.56, 0.57],
'英雄B': [0.40, 0.42, 0.48, 0.50, 0.53, 0.55, 0.60],
'英雄C': [0.55, 0.58, 0.60, 0.63, 0.65, 0.67, 0.70]
})
段位
:表示《王者荣耀》中的不同段位。英雄A
、英雄B
、英雄C
:表示三个不同英雄在不同段位下的胜率数据。
4. 设置数据索引
为了方便在热力图中显示段位,我们将段位设置为数据框的索引。
# 设置段位为索引
data.set_index('段位', inplace=True)
通过set_index
方法,将段位设置为索引,使得段位信息能够在绘制图表时作为Y轴显示。
5. 绘制热力图
使用Seaborn的heatmap
函数,我们可以轻松绘制出英雄胜率的热力图,并且通过颜色深浅来直观显示不同英雄在不同段位的胜率差异。
# 使用seaborn绘制胜率热力图
sns.heatmap(data, annot=True, cmap='YlGnBu')
annot=True
:在每个单元格中显示具体的胜率数值。cmap='YlGnBu'
:设置颜色渐变方案,YlGnBu
表示从黄色到绿色再到蓝色的渐变色。
6. 显示图表
最后,我们通过plt.show()
来显示绘制的热力图。
# 显示图表
plt.show()
通过这张热力图,就可以清晰地看到不同英雄在不同段位的胜率表现。例如,颜色越深的地方表示胜率越高,这对于玩家选择英雄有很大的参考价值。比如,英雄C在各个段位的表现都比较稳定且胜率较高,可能是一个值得信赖的选择。
彩蛋
嘿嘿嘿,几天自己做的晚餐,感觉自己做真的很划算,这一盘饺子成本也才三四块钱哎!好吃还划算嘞!
然后趁今天开学第一天,写一下这学期的计划吧!
1)过六级!过六级!这是这个学期比较重要的事情
2)好好学习专业知识,提升一下绩点
3)这属于小秘密暂时不说哈!
4)看完《明朝那些事儿》(大哥你买了一年半了咋还没看完啊!!!)
5)有意识的练字
6)做mod地图
7)多写写文章,争取突破600粉(是不是有点太过远大哈!反正只管好好分享知识,其他都随缘吧)
8)大胆些,自信些
9)有空就写写歌
10)......
新学期!新气象!你我都加油