首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python数据可视化 热力图

Python数据可视化 热力图

作者头像
叶庭云
修改于 2021-01-23 05:28:05
修改于 2021-01-23 05:28:05
7.2K0
举报
文章被收录于专栏:Python进阶之路Python进阶之路

不要停止奔跑,不要回顾来路,来路无可眷恋,值得期待的只有前方。——《马男波杰克》

文章目录

热力图:通过颜色深浅变化,优雅地展示数据的差异。

一、matplotlib绘制热力图

Matplotlib是Python著名的2D绘图库,该库仿造Matlab提供了一整套相似的绘图函数,用于绘图和绘表,是强大的数据可视化工具和做图库,且绘制出的图形美观。

测试数据来源https://www.tudinet.com/market-0-0-0-0/

代码如下:

代码语言:txt
AI代码解释
复制
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl

df = pd.read_excel('real_estate_info.xlsx')
area = df['土地位置']

# 成都主要 区 县 市  9区6县4市
with open('test.txt', encoding='utf-8') as f:
    areas = f.read().split('、')

for item in areas:
    # 每个行政区 对每行数据都进行判断
    # 土地位置里包含行政区名  值为规划建筑面积   不包含  值为0
    # 得到19列 以行政区为列名 其下面值为规划建筑面积
    df[item] = [eval(df.loc[x, '规划建筑面积'][:-1]) if item in df.loc[x, '土地位置'] else 0 for x in range(len(df['土地位置']))]

date = df['推出时间'].str.split('年', expand=True)[0]   # 这列的字符串 按年切割
df['年份'] = date        # 添加新的一列  年份

df1 = df[areas]
df1.index = df['年份']
df2 = df1.groupby('年份').sum()
# print(df2.iloc[:5, ::])  # 2020年数据只有到2月的  舍去
# print(type(df2.iloc[:5, ::].T))     # 转置
datas = np.array(df2.iloc[:5, ::].T)   # 19行 5列 二维数组
print(datas)

x_label = [year for year in range(2015, 2020)]
y_label = areas
mpl.rcParams['font.family'] = 'Kaiti'     # 中文显示
fig, ax = plt.subplots(figsize=(15, 9))   # 绘图
heatmap = plt.pcolor(datas)
for y in range(datas.shape[0]):
    for x in range(datas.shape[1]):
        plt.text(x + 0.5, y + 0.5, '%.1f' % datas[y, x],    # 热力图种每个格子添加文本  数据项设置
                 horizontalalignment='center', verticalalignment='center',
                 )

# x y轴刻度设置
plt.xticks(np.arange(0.5, 5.5, 1))
plt.yticks(np.arange(0.5, 19.5, 1))
# x y轴标签设置
ax.set_xticklabels(x_label)
ax.set_yticklabels(areas)
# title
ax.set_title(r'各行政区2015-2019年的总规划建筑面积(平方米)', fontsize=25, x=0.5, y=1.02)

# 隐藏边框
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
plt.savefig('heat_map.png')
# 热力图   展示
plt.colorbar(heatmap)
plt.show()

运行效果如下:

matplotlib绘制heatmap,该方法比较繁琐,要调用很多辅助函数才能实现效果更好的热图。

二、seaborn绘制热力图

Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能使你的图变得精致。

代码语言:txt
AI代码解释
复制
seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False,
            annot=None, fmt=".2g", annot_kws=None,
            linewidths=0, linecolor="white",
            cbar=True, cbar_kws=None, cbar_ax=None,
            square=False, xticklabels="auto", yticklabels="auto",
            mask=None, ax=None, **kwargs):
  • data:矩阵数据集,可以是numpy的数组(ndarray),也可以是pandas的DataFrame。如果是DataFrame,则df的index/column信息会对应到heatmap上,即df.index对应到热力图的x轴,df.columns对应到热力图的y轴
  • vmax,vmin:分别是热力图的颜色取值最大和最小范围,默认是根据data数据表里的取值确定
  • center:数据表取值有差异时,设置热力图的色彩中心对齐值;通过设置center值,可以调整生成的图像颜色的整体深浅
  • robust:默认取值False;如果是True,且没设定vmin和vmax的值,热力图的颜色映射范围根据具有鲁棒性的分位数设定,而不是用极值设定
  • annot(annotate的缩写):默认取值False;如果为True,在热力图每个方格写入对应的数据
  • fmt:字符串格式代码,矩阵上标识数字的数据格式,比如保留小数点后几位数字
  • annot_kws:默认取值False;如果是True,设置热力图矩阵上数字的大小颜色字体
  • linewidths:定义热力图里表示两两特征关系的矩阵小块之间的间隔大小
  • linecolor:切分热力图上每个矩阵小块的线的颜色,默认值是 white
  • xticklabels,,yticklabels:xticklabels控制x轴标签的输出;yticklabels控制y轴标签的输出。默认值是auto,如果是True,则以DataFrame的index作为x轴标签、columns作为y轴的标签。如果是False,则不添加行标签名。如果是列表,则标签名改为列表中给的内容。如果是整数K,则在图上每隔K个标签进行一次标注。 如果是auto,则自动选择标签的标注间距,将标签名不重叠的部分(或全部)输出
  • mask:控制某个矩阵块是否显示出来。默认值是None。如果是布尔型的DataFrame,则将DataFrame里True的位置用白色覆盖掉
  • ax:设置作图的坐标轴,一般画多个子图时需要修改不同子图的该值
  • **kwargs:All other keyword arguments are passed to ax.pcolormesh
  • cbar:是否在热力图侧边绘制颜色刻度条,默认值是True
  • cbar_kws:热力图侧边绘制颜色刻度条时,相关字体设置,默认值是None
  • cbar_ax:热力图侧边绘制颜色刻度条时,刻度条位置设置,默认值是None
  • cmap:从数字到色彩空间的映射

cmap:从数字到色彩空间的映射,改变cmap参数可以改变图的颜色,cmap有以下选择:

Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens,Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cividis, cividis_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, hsv_r, icefire, icefire_r, inferno, inferno_r, jet, jet_r, magma, magma_r, mako, mako_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, rocket, rocket_r, seismic, seismic_r, spring, spring_r, summer, summer_r, tab10, tab10_r, tab20, tab20_r, tab20b, tab20b_r, tab20c, tab20c_r, terrain, terrain_r, twilight, twilight_r, twilight_shifted, twilight_shifted_r, viridis, viridis_r, vlag, vlag_r, winter, winter_r

代码如下:

代码语言:txt
AI代码解释
复制
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib as mpl

df = pd.read_excel('real_estate_info.xlsx')
area = df['土地位置']

# 成都主要 区 县 市  9区6县4市
with open('test.txt', encoding='utf-8') as f:
    areas = f.read().split('、')

for item in areas:
    # 每个行政区 对每行数据都进行判断
    # 土地位置里包含行政区名  值为规划建筑面积   不包含  值为0
    # 得到19列 以行政区为列名  其下面为规划建筑面积
    df[item] = [eval(df.loc[x, '规划建筑面积'][:-1]) if item in df.loc[x, '土地位置'] else 0 for x in range(len(df['土地位置']))]

date = df['推出时间'].str.split('年', expand=True)[0]   # 这列的字符串 按年切割
df['年份'] = date        # 添加新的一列  年份

df1 = df[areas]
df1.index = df['年份']
df2 = df1.groupby('年份').sum()
# print(df2.iloc[:5, ::])  # 2020年数据只有到2月的  舍去
# print(type(df2.iloc[:5, ::].T))      # 转置
datas = np.array(df2.iloc[:5, ::].T)   # 19行 5列 二维数组
print(datas, type(datas))

x_label = [year for year in range(2015, 2020)]
y_label = areas
mpl.rcParams['font.family'] = 'Kaiti'
fig, ax = plt.subplots(figsize=(15, 9))
# 绘制热力图    cmap:从数字到色彩空间的映射
sns.heatmap(data=df2.iloc[:5, ::].T, linewidths=0.25,
            linecolor='black', ax=ax, annot=True,
            fmt='.1f', cmap='OrRd', robust=True,
            )

# 添加描述信息   x y轴  title
ax.set_xlabel('年份', fontdict={'size': 18, 'weight': 'bold'})
ax.set_ylabel('行政区', fontdict={'size': 18, 'weight': 'bold'})
ax.set_title(r'各行政区2015-2019年的总规划建筑面积(平方米)', fontsize=25, x=0.5, y=1.02)

# 隐藏边框
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)

# 保存 展示图片
plt.savefig('heat_map.png')
plt.show()

运行效果如下:

改变cmap参数,得到不同的效果:

作者:叶庭云 微信公众号:修炼Python CSDN:https://yetingyun.blog.csdn.net/ 本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。 觉得文章对你有帮助、让你有所收获的话,期待你的点赞呀,不足之处,也可以在评论区多多指正。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
3.29 VR扫描:Sandbox VR重启将开新店;《Valheim: 英灵神殿》八连冠!
(VRPinea 3月29日讯)今日重点新闻:VR线下娱乐Sandbox VR将在今年夏季重启,首家门店将开设在美国拉斯维加斯;《杀手》系列游戏开发商宣布《杀手3》的DLC扩展计划,将推出兼容PS VR版本的游戏内容;Steam销量榜《英灵神殿》斩获八连冠,《爱莉克斯》第四。
VRPinea
2021/04/09
4880
3.29 VR扫描:Sandbox VR重启将开新店;《Valheim: 英灵神殿》八连冠!
2021年第一季度的最后一个月,VR圈发生了这些大事……
(VRPinea 4月9日讯)4月第一周马上就要结束啦。度过了美好的清明三天小假期,不知道小伙伴们对上月VR圈发生的大事件还记得多少?别急,P君这就来帮小伙伴们回忆回忆。
VRPinea
2021/04/26
1.1K0
2021年第一季度的最后一个月,VR圈发生了这些大事……
7.5 VR扫描:建模平台JigSpace获470万美元融资;Steam 6月硬件统计GTX 1060第一
(VRPinea 7月5日讯)今日重点新闻:澳大利亚3D教学建模平台JigSpace完成470万美元融资;Steam公布6月硬件统计调查,GTX 1060占比第一;LBE AR手游《巫师:怪物杀手》将于7月21日正式免费登陆苹果iOS和安卓平台。
VRPinea
2021/07/23
4620
11.6 VR 扫描:超级电容器制造商Skeleton融资3.2亿元;《精灵宝可梦GO》营收10亿美元
(VRPinea 11月6日讯)今日重点新闻:爱沙尼亚超级电容器制造商Skeleton再融资3.2亿元,研发可15秒充满电的超级电池;三星推出首款ToF图像传感器ISOCELL Vizion 33D,或将搭载三星旗下智能手机;《精灵宝可梦GO》十个月营收10亿美元创新高。
VRPinea
2020/11/13
3880
11.6 VR 扫描:超级电容器制造商Skeleton融资3.2亿元;《精灵宝可梦GO》营收10亿美元
1.22 VR扫描:SNOW中国完成5000万美元A轮融资;Greenlight报告:2017年AR/VR融资达19亿美元
SNOW中国完成5000万美元A轮融资,用以拓展AR业务 今日,摄影与视频类手机App开发公司SNOW中国宣布完成5000万美元A轮融资,由红杉资本中国基金与软银集团联合投资。此次投资将帮助SNOW
VRPinea
2018/05/18
6730
9.10 VR扫描:亮风台C+轮融资2.7亿人民币;Facebook智能眼镜发布
AR公司亮风台宣布,已完成C+轮2.7亿元人民币融资。本轮融资由CPE源峰领投,晶凯资本、源慧资本、大观资本、清控银杏等老股东跟投。
VRPinea
2021/09/14
6420
10.9 VR扫描:Digi-Capital:2017 Q3季度AR-VR公布投融资达3亿美元
Digi-Capital:2017 Q3季度AR-VR公布投融资达3亿美元 根据Digi-Capital报告,2017年Q3季度的AR/VR公布投融资总额达到3亿美元,使得过去一年的总额达到18亿美元
VRPinea
2018/05/17
5340
2.24 VR扫描:三星发布猎户座9系处理器,或成骁龙835最大对手
三星公布猎户座8895 近日,三星宣布推出Exynos 8895并公布其规格信息。据了解,这是三星首款利用10纳米FinFET工艺技术的处理器芯片组,与14纳米技术相比,新品性能提升最高可达27%,
VRPinea
2018/05/15
6780
8.7 VR扫描:Snap将融资10亿美元短期债务;三星发布7nm SoC Exynos 9825
日前,Snap表示,将进行10亿美元的短期债务再融资。该资金将用于投资更多的媒体内容、AR功能及潜在的企业并购。Snap首席执行官Evan Spigger表示,目前投资者对可转换债券的需求强劲,为Snap提供了发行公司债券的完美时机。此外,Spigger预计将于本周完成融资。
VRPinea
2019/08/09
4330
6.6 VR扫描:VR/AR软件供应商Innoactive宣布完成440万欧元融资
VR/AR软件供应商Innoactive宣布完成440万欧元融资 近日,VR/AR软件供应商Innoactive宣布完成440万欧元融资,由Unternehmertum Venture Capita
VRPinea
2018/06/11
4170
4.12 VR扫描:苹果将推iOS 15及可能的MR头显;VR生存游戏《先驱者》二连冠
(VRPinea 4月12日讯)今日重点新闻:苹果将于6月7日的开发者大会上发布iOS 15,届时或将发布MR头显;HTC再发VR设备渲染图,可能推出新款Vive系列头显;上周Steam销量榜,VR科幻题材多人线上射击生存游戏《先驱者》二连冠, Valve Index第八。
VRPinea
2021/04/26
4840
4.12 VR扫描:苹果将推iOS 15及可能的MR头显;VR生存游戏《先驱者》二连冠
7.2 VR扫描:RealWear完成8000万美元B轮融资;国行版HoloLens 2已通过3C认证
近日,AR智能眼镜厂商RealWear宣布其8000万美元的B轮融资已完成。本次融资由工业自动化厂商泰瑞达领投,其他投资者包括Bose Ventures、高通风投、高平电子,以及摩根大通集团。据悉,RealWear将利用这笔资金来继续市场扩张,并加速其免手操作平台的开发。
VRPinea
2019/07/11
5590
7.2 VR扫描:RealWear完成8000万美元B轮融资;国行版HoloLens 2已通过3C认证
7.7 VR扫描:任天堂公布Switch OLED Model;《精灵宝可梦GO》累计营收超50亿美元
(VRPinea 7月7日讯)任天堂公布Switch升级版机型Switch OLED Model,售价2680港币;三星为旗下冰箱及电视推出AR演示,用户可体验虚拟购物;《精灵宝可梦GO》累计营收超50亿美元,相比2020上半年《精灵宝可梦GO》营收增长了34%。
VRPinea
2021/07/23
3660
3.24 VR扫描:VR医疗AppliedVR完成千万美元融资;《半条命:爱莉克斯》打折促销
(VRPinea 3月24日讯)今日重点新闻:VR医疗公司AppliedVR宣布完成2900万美元A轮融资,本轮融资由F-Prime Capital、等完成,将用于EaseVRx产品的量产及技术研发;《半条命:爱莉克斯》在Steam打折促销,售价97人民币,4月1日截止;新版必胜客披萨包装盒加入《AR吃豆人》游戏。
VRPinea
2021/04/09
8490
3.24 VR扫描:VR医疗AppliedVR完成千万美元融资;《半条命:爱莉克斯》打折促销
5.9 VR扫描:Somnium Space获1000万美元种子轮融资;VR High Fidelity裁员25%
今日,VR社交平台公司Somnium Space宣布获得1000万美元种子轮融资,本轮资金将会被用于继续开发开放式虚拟环境等技术。据可靠消息,此前Somnium Space曾在IndieGoGo等,销售虚拟世界中的土地以筹集资金,并在3天内达成1万美元的众筹目标,最终总共获得20万美元。
VRPinea
2019/05/15
4490
1.30 VR扫描:Oculus VR正式更名为Meta Quest VR;Snap升级AR滤镜购物体验
(VRPinea 1月30日讯)今日重点新闻:Meta的官网正式将Oculus的品牌名称更改为Meta;社交软件Snapchat更新AR试用滤镜功能;第三人称冒险游戏《Lost Ember》的VR版即将登陆Steam平台。
VRPinea
2022/03/11
5810
1.30 VR扫描:Oculus VR正式更名为Meta Quest VR;Snap升级AR滤镜购物体验
9.19VR行业大事件:索尼证实,PSVR 2不兼容初代PSVR游戏
(VRPinea 9月19日讯)今日重点新闻:索尼透露PSVR 2将不向下兼容初代PSVR的游戏;MicroOLED旗下的ActiveLook平台将支持Apple Watch运动数据同步;三星Galaxy A系列的AR滤镜“Fun Mode”已被使用超过25亿次。
VRPinea
2022/11/16
5040
9.19VR行业大事件:索尼证实,PSVR 2不兼容初代PSVR游戏
6.13 VR扫描:《Rec Room》获两轮总额达2400万美元融资;Oculus要求Quest开发者删除PC串流功能
近日,VR社交平台《Rec Room》的开发商Against Gravity发布消息称,其平台已经通过A轮和B轮融资,获得了共计2400万美元。融资由红杉资本和Index Ventures领投,《Rec Room》迄今为止的融资总额已经达到2900万美元。
VRPinea
2019/06/20
3890
6.13 VR扫描:《Rec Room》获两轮总额达2400万美元融资;Oculus要求Quest开发者删除PC串流功能
4.19 VR扫描:Gleechi获2500万瑞典克朗融资;《生化危机4》将独占Oculus Quest 2
(VRPinea 4月19日讯)今日重点新闻:VR培训平台Gleechi获2500万瑞典克朗融资,将用于加速业务以及扩大规模等;《生化危机4》将独占Oculus Quest 2,游戏本体采用了第一人称视角;3D虚拟化身平台Tafi 推Astra SDK开发套件,主要针对开发者设计。
VRPinea
2021/04/26
4640
4.19 VR扫描:Gleechi获2500万瑞典克朗融资;《生化危机4》将独占Oculus Quest 2
5.8 VR扫描:亮风台完成1.2亿元B+轮融资;上海驾校用VR教学,科目二合格率85%
近日,AR开发商亮风台宣布完成1.2亿元B+轮融资,本轮投资方包括MYEG Capital、活水资本等境内外美元和人民币基金,老股东纪源源星资本、美图公司追加。亮风台成立于2012年,自主研发了HiAR技术基础平台、HiLeia通讯平台、AR眼镜HiAR Glasses等。亮风台表示,本轮融资将主要用于公司产品和服务的进一步商业化落地。
VRPinea
2019/05/15
5370
5.8 VR扫描:亮风台完成1.2亿元B+轮融资;上海驾校用VR教学,科目二合格率85%
推荐阅读
3.29 VR扫描:Sandbox VR重启将开新店;《Valheim: 英灵神殿》八连冠!
4880
2021年第一季度的最后一个月,VR圈发生了这些大事……
1.1K0
7.5 VR扫描:建模平台JigSpace获470万美元融资;Steam 6月硬件统计GTX 1060第一
4620
11.6 VR 扫描:超级电容器制造商Skeleton融资3.2亿元;《精灵宝可梦GO》营收10亿美元
3880
1.22 VR扫描:SNOW中国完成5000万美元A轮融资;Greenlight报告:2017年AR/VR融资达19亿美元
6730
9.10 VR扫描:亮风台C+轮融资2.7亿人民币;Facebook智能眼镜发布
6420
10.9 VR扫描:Digi-Capital:2017 Q3季度AR-VR公布投融资达3亿美元
5340
2.24 VR扫描:三星发布猎户座9系处理器,或成骁龙835最大对手
6780
8.7 VR扫描:Snap将融资10亿美元短期债务;三星发布7nm SoC Exynos 9825
4330
6.6 VR扫描:VR/AR软件供应商Innoactive宣布完成440万欧元融资
4170
4.12 VR扫描:苹果将推iOS 15及可能的MR头显;VR生存游戏《先驱者》二连冠
4840
7.2 VR扫描:RealWear完成8000万美元B轮融资;国行版HoloLens 2已通过3C认证
5590
7.7 VR扫描:任天堂公布Switch OLED Model;《精灵宝可梦GO》累计营收超50亿美元
3660
3.24 VR扫描:VR医疗AppliedVR完成千万美元融资;《半条命:爱莉克斯》打折促销
8490
5.9 VR扫描:Somnium Space获1000万美元种子轮融资;VR High Fidelity裁员25%
4490
1.30 VR扫描:Oculus VR正式更名为Meta Quest VR;Snap升级AR滤镜购物体验
5810
9.19VR行业大事件:索尼证实,PSVR 2不兼容初代PSVR游戏
5040
6.13 VR扫描:《Rec Room》获两轮总额达2400万美元融资;Oculus要求Quest开发者删除PC串流功能
3890
4.19 VR扫描:Gleechi获2500万瑞典克朗融资;《生化危机4》将独占Oculus Quest 2
4640
5.8 VR扫描:亮风台完成1.2亿元B+轮融资;上海驾校用VR教学,科目二合格率85%
5370
相关推荐
3.29 VR扫描:Sandbox VR重启将开新店;《Valheim: 英灵神殿》八连冠!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档