热力图可显性、直观地将数据分布通过不同颜色区块呈现,可以看数据表里多个特征两两的相似度,是我们常用的图表类型之一。
今天,总结了Python代码绘制热力图的方法,代码亲跑无误!
另外,还是老样子,值得深入学习的知识,添加了对应的官方文档链接!
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
data = pd.read_excel("样本数据.xlsx")
data=round(data.astype("float")) # 把数值变为浮点数类型,并且去掉浮点数的小数部分
data
添加索引行&列
columns= ['皮肤','发型','强壮','体重和体型','五官','时尚感','性感','年轻','化妆']
index = ['中国','美国','英国','日本','韩国','法国','德国','南非','俄罗斯','意大利','塞尔维亚','澳大利亚']
说明:为什么在Excel数据集中没有直接的文字索引?这里为了方便后面值的索引定位,所以换成了数字。
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可以定位每个具体的值。
print(value)
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轴标签旋转
第一种方式保存为HTML格式
heatmap.render("热力图.html")
第二种方式保存为PNG格式
make_snapshot(driver, heatmap.render(),"热力图.png")
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
data = pd.read_excel("样本数据.xlsx")
data=round(data.astype("float"))
x= ['皮肤','发型','强壮','体重和体型','五官','时尚感','性感','年轻','化妆']
y = ['中国','美国','英国','日本','韩国','法国','德国','南非','俄罗斯','意大利','塞尔维亚','澳大利亚']
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
plt.savefig("热力图2.png")
大家可以通过评论或私信的方式提出对本文的建议,也可以通过 点赞 的方式表达对本文的支持!
感谢大家!!!