百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

文科生自学Python-用Seaborn/Plotly画热力图

off999 2024-12-10 19:20 11 浏览 0 评论

--世界上只有一种真正的英雄主义,就是看清生活的真相之后依然热爱生活,学习编程成就更好的自己--

Python语言简洁生动,特别适合文科生学习入门IT世界,用几十行代码就能够做一个完整的爬虫脚本,开发效率杠杠的!短时间内即可解决工作和学习中碰到的各种棘手问题。(本人外语专业毕业,机缘巧合爱上编程,自学道路曲曲折折,痛并快乐!)在这里总结一下自学Python遇到的难点和重点,分享码过的代码和要点总结,希望能够给初学者一点启示和鼓励,同时愿意结交更多大神交流有助提升自己的水平。

今天分享一下大名鼎鼎的热力图-heatmap,主要使用Seaborn资源库来制图演示,最后也用Plotly做一个简单展示和对比,大家都知道热力图可以生动对比不同数据样本数值大小情况,下面选取的案例样本还是Plotly内置的世界人口数据集

1.调包并抽取几个国家生成一个特定的数据集合,方便后续制图和演示:

#import plotly to get the datasets
import plotly.graph_objects as go
import plotly_express as px
#import seaborn to draw heatmap
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
#Get a dataset of different countries
df = px.data.gapminder().query("country == ['France','Germany','Italy','Canada','Spain','Thailand','Argentina']") #'Japan'
df["life"] = df["lifeExp"].astype(int)
df["pop-KW"] = (df["pop"]/10000000).astype(int) #GGet pop 1000W
display(df)

选取了法国,德国,意大利,西班牙,加拿大,泰国和阿根廷并查看:

2.在制图之前加工数据成为交叉二维表,方便直接生成热力图

#get the data into a proper pivot to draw heatmap
pop_life_heatmap = df.pivot("country", "year", "life")
display(pop_life_heatmap)

通过pivot方法得到交叉表(抽取寿命长短数据),一般横向对应的是X轴,纵向对应的是Y轴,表格显示不同国家在不同年代国民平均寿命情况:

3.通过sns.heatmap函数直接绘制热力图

#https://seaborn.pydata.org/generated/seaborn.heatmap.html?highlight=fmt#seaborn.heatmap
fig=sns.heatmap(pop_life_heatmap,annot=False,fmt="d",cmap="RdBu_r")
fig

生成的热力图略小,考虑调整图像大小:

4.添加参数f, ax = plt.subplots(figsize=(x, x))调整图像大小

#https://seaborn.pydata.org/tutorial/color_palettes.html#tools-for-choosing-color-palettes
f, ax = plt.subplots(figsize=(15, 10)) #set the size of heatmap
fig=sns.heatmap(pop_life_heatmap,annot=False,fmt="d",linewidths=0.5,cmap="RdBu_r") #
fig

考虑在每个色块备注上数值,方便更具体的对比:

5.调整参数选项annot=True即可显示数值

#https://seaborn.pydata.org/tutorial/color_palettes.html#tools-for-choosing-color-palettes
f, ax = plt.subplots(figsize=(15, 10)) #set the size of heatmap
fig=sns.heatmap(pop_life_heatmap,annot=True,fmt="d",linewidths=0.5,cmap="RdBu_r") #
fig

是不是感觉有点专业的味道了,而且直观对比不同国家寿命情况:

6.还可变换不同颜色主题风格,且可以调整色块间距

#https://seaborn.pydata.org/tutorial/color_palettes.html#tools-for-choosing-color-palettes
f, ax = plt.subplots(figsize=(15, 10)) #set the size of heatmap
fig=sns.heatmap(pop_life_heatmap,annot=True,fmt="d",linewidths=2,cmap="viridis") #Spectral viridis
fig

参数linewidths可以调整色块间距大小,Seaborn提供了多个不同颜色主题风格,相关链接参考如下:

https://seaborn.pydata.org/tutorial/color_palettes.html#tools-for-choosing-color-palettes:

7.给热力图添加标题

#https://seaborn.pydata.org/tutorial/color_palettes.html#tools-for-choosing-color-palettes
f, ax = plt.subplots(figsize=(15, 10)) #set the size of heatmap
fig=sns.heatmap(pop_life_heatmap,annot=True,fmt="d",linewidths=0.5,cmap="YlOrBr") #viridis YlOrBr
#set title for it
fig.set_title(label="Heatmap of Pop LifeEXP from different Countries",fontdict = {"fontsize":11})
#set position for the xaxis ticks
fig

添加参数set_title即可:

8.把年份标记信息显示调整到上方

#https://seaborn.pydata.org/tutorial/color_palettes.html#tools-for-choosing-color-palettes
f, ax = plt.subplots(figsize=(15, 10)) #set the size of heatmap
fig=sns.heatmap(pop_life_heatmap,annot=True,fmt="d",linewidths=0.5,cmap="Spectral") #viridis YlOrBr
#set title for it
fig.set_title(label="Heatmap of Pop LifeEXP from different Countries",fontdict = {"fontsize":11})
#set position for the xaxis ticks
fig.xaxis.set_ticks_position("top") 
fig

添加和设置参数xaxis.set_ticks_position即可:

看到这里是不是感叹Seaborn真的很给力啊!!!几行代码就能绘制特别优雅的热力图,能够直观展示数据间的大小关系,接下来简单讲一下如何用Plotly实现吧:

9.同样使用刚刚的数据集合

#draw heatmap with plotly
pop_life_heatmap = df.pivot("country", "year", "life")
display(pop_life_heatmap)

查看处理好的交叉表:

10.通过imshow制图函数生成热力图

#draw heatmap with plotly 
#https://plotly.com/python/imshow/
fig = px.imshow(pop_life_heatmap,labels=dict(x="Year", y="Country", color="LifeExp"))
fig.show()

得到的热力图看起来也不错,还能进行一定的交互:

11.同样考虑改变一下颜色主题风格

fig = px.imshow(pop_life_heatmap,color_continuous_scale='RdBu_r',labels=dict(x="Year", y="Country", color="LifeExp"))
fig.show()

大家看到这里也赶紧动手试试吧!!

END

我为人人,人人为我!!欢迎大家关注,点赞和转发!!!

~~人生不是赛场,梦想不容退场~~不断努力学习蜕变出一个更好的自己,不断分享学习路上的收获和感悟帮助他人成就自己!!!

相关推荐

独家 | 5 个Python高级特性让你在不知不觉中成为Python高手

你已经使用Python编程了一段时间,编写脚本并解决各种问题。是你的水平出色吗?你可能只是在不知不觉中利用了Python的高级特性。从闭包(closure)到上下文管理器(contextmana...

Python装饰器

Python装饰器是一种用于修改函数或类的行为的特殊语法。它们允许在不修改原始代码的情况下,通过将函数或类作为参数传递给另一个函数来添加额外的功能。装饰器本质上是一个函数,它接受一个函数作为参数,并返...

中高阶Python常规用法--上下文管理器

Python以简单性和通用性著称,是一种深受全球开发人员喜爱的编程语言。它提供了大量的特性和功能,使编码成为一种愉快的体验。在这些功能中,一个经常被新手忽视的强大工具是上下文管理器。上下文管理器是高...

Python小案例67- 装饰器

Python装饰器是一种用于修改函数或类的行为的特殊语法。它们允许在不修改原始代码的情况下,通过将函数或类作为参数传递给另一个函数来添加额外的功能。装饰器本质上是一个函数,它接受一个函数作为参数,并返...

python常用的语法糖

概念Python的语法糖(SyntacticSugar)是指那些让代码更简洁、更易读的语法特性,它们本质上并不会增加新功能,但能让开发者更高效地编写代码。推导式写法推导式是Python最经典的...

python - 常用的装饰器 decorator 有哪些?

python编程中使用装饰器(decorator)工具,可以使代码更简洁清晰,提高代码的重用性,还可以为代码维护提供方便。对于python初学者来说,根据装饰器(decorator)的字面意思并不...

python数据缓存怎么搞 ?推荐一个三方包供你参考,非常简单好用。

1.数据缓存说明数据缓存可以说也是项目开发中比不可少的一个工具,像我们测试的系统中,你都会见到像Redis一样的数据缓存库。使用缓存数据库的好处不言而喻,那就是效率高,简单数据直接放在缓存中...

用于时间序列数据的Graphite监视工具

结合第三方工具,Graphite为IT性能监控提供了许多好处。本文介绍其核心组件,包括Carbon、Whisper以及安装的基本准则。Graphite监视工具可实时或按需,大规模地绘制来自多个来源的时...

Python3+pygame实现的坦克大战

一、显示效果二、代码1.说明几乎所有pygame游戏,基本都遵循一定的开发流程,大体如下:初始化pygame创建窗口while循环检测以及处理事件(鼠标点击、按键等)更新UI界面2.代码创建一个m...

Python之鸭子类型:一次搞懂with与上下文装饰器

引言在鸭子类型的理念的基础之上,从关注类型,转变到关注特性和行为。结合Python中的魔法函数的体系,我们可以将自定义的类型,像内置类型一样被使用。今天这篇文章中,接着该话题,继续聊一下with语法块...

Python必会的50个代码操作

学习Python时,掌握一些常用的程序操作非常重要。以下是50个Python必会的程序操作,主要包括基础语法、数据结构、函数和文件操作等。1.HelloWorldprint("Hello,...

一文掌握Python 中的同步和异步

同步代码(Sync)同步就像在一个流水线上工作,每个任务都等待前一个任务完成。示例:机器A切割钢板→完成后,机器B钻孔→完成后,机器C上色。在Python中,同步代码看起来像这样:im...

python 标注模块timeit: 测试函数的运行时间

在Python中,可以使用内置的timeit模块来测试函数的运行时间。timeit模块提供了一个简单的接口来测量小段代码的执行时间。以下是使用timeit测试函数运行时间的一般步骤:导入...

Python带你找回童年的万花尺

还记得小时候的万花尺吧?这么画:一点也不费脑筋,就可以出来这么多丰富多彩的复杂几何图形。具体而言,可以用万花尺玩具(如图2-1所示)来绘制数学曲线。这种玩具由两个不同尺寸的塑料齿轮组成,一大一小。小的...

Python 时间模块深度解析:从基础到高级的全面指南

直接上干货一、时间模块核心类介绍序号类名说明1datetime.datetime表示一个具体的日期和时间,结合了日期和时间的信息。2datetime.date表示一个具体的日期。3datetime.t...

取消回复欢迎 发表评论: