热力图可显性、直观地将数据分布通过不同颜色区块呈现,可以看数据表里多个特征两两的相似度,是我们常用的图表类型之一。
今天,总结了Python代码绘制热力图的方法,代码亲跑无误!
另外,还是老样子,值得深入学习的知识,添加了对应的官方文档链接!
1.利用pyecharts制作热力图
1.1 模块导入:
1 2 3 4 5 | from pyecharts import options as opts from pyecharts.charts import HeatMap from snapshot_selenium import snapshot as driver from pyecharts.render import make_snapshot import pandas as pd |
1.2 数据准备:
1 2 3 | data = pd.read_excel("样本数据.xlsx") data=round(data.astype("float")) # 把数值变为浮点数类型,并且去掉浮点数的小数部分 data |
输出结果:
添加索引行&列
1 2 | columns= ['皮肤','发型','强壮','体重和体型','五官','时尚感','性感','年轻','化妆'] index = ['中国','美国','英国','日本','韩国','法国','德国','南非','俄罗斯','意大利','塞尔维亚','澳大利亚'] |
说明:为什么在Excel数据集中没有直接的文字索引?这里为了方便后面值的索引定位,所以换成了数字。
1.3 对应值匹配:
1 | value= [[y, x, data.loc[x,y]] for x in range(12) for y in range(9)] |
说明:这里的x代表index,实际意义表示12个国家,y代表columns,实际意义表示9个外表特质。根据x, y可以定位每个具体的值。
1 | print(value) |
部分输出结果:
1.4 热力图绘制及参数设置:
1 2 3 4 5 6 | heatmap = HeatMap(init_opts=opts.InitOpts()) heatmap.add_xaxis(columns) heatmap.add_yaxis("", index, value,label_opts=opts.LabelOpts(is_show=True, position="inside")) heatmap.set_global_opts( title_opts=opts.TitleOpts(title="各个国家对于男性魅力的理解(外表特质的重要程度)"), visualmap_opts=opts.VisualMapOpts(), # 视觉映射配置 xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=30))) # 将x轴标签旋转 |
1.5 保存图片:
第一种方式保存为HTML格式
1 | heatmap.render("热力图.html") |
第二种方式保存为PNG格式
1 | make_snapshot(driver, heatmap.render(),"热力图.png") |
1.6 查看图片:
2.利用seaborn库制作热力图
2.1 模块导入:
1 2 3 4 | import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns |
2.2 数据准备
1 2 3 4 | data = pd.read_excel("样本数据.xlsx") data=round(data.astype("float")) x= ['皮肤','发型','强壮','体重和体型','五官','时尚感','性感','年轻','化妆'] y = ['中国','美国','英国','日本','韩国','法国','德国','南非','俄罗斯','意大利','塞尔维亚','澳大利亚'] |
2.3 热力图绘制及参数设置
1 2 3 4 5 6 7 8 | plt.rcParams['font.sans-serif']=['simsun'] # 设置中文字体 fig=plt.figure(figsize=(5,5),dpi=800) # 设置图片大小 ax = sns.heatmap(data, vmin=0, vmax=80, annot=True, # 设置图标显示范围, linewidths=.5, # 单元格之间添加行 cmap="winter", # 设置热力图颜色 xticklabels=x, yticklabels=y) # 设置行列标签 plt.xticks(rotation=45) |
更多关于seaborn.heatmap的内容,请戳官方链接:http://seaborn.pydata.org/generated/seaborn.heatmap.html
2.4 保存图片
1 | plt.savefig("热力图2.png") |
2.5 查看图片
大家可以通过评论或私信的方式提出对本文的建议,也可以通过 点赞 的方式表达对本文的支持!
感谢大家!!!