目录
前言:
热力图是一个表现数值的矩阵,通过颜色的变化我们可以很迅速的对数据有所了解,图中的每一个小长方形都是一个数值,选定我们所需要的色键颜色来给每一个数值分配颜色。
一、热力图的解读
热力图(Heatmap)是通过将数据矩阵中的各个值按照一定规律映射为颜色展示,利用颜色变化来可视化数据,这种方法可以很直观地呈现多样本多个基因的全局表达量变化,同时还可以展现多样本或者多基因表达量的聚类关系。
二、热力图的绘制
绘制热力图常用的是R语言,如果您对R不是很熟悉的话,推荐一个在线绘图网站https://www.bioladder.cn,此网站是由青莲公司和国家蛋白质科学中心联合建立和维护的,是此公司在满足自己以及其客户需求的基础上,开放给所有人免费使用的,不限制使用次数,是生信分析绘图免费又好用的神器。
三、实现热力图的具体代码
1.导入需要用到的库
代码示例:
import pandas as pd
2.导入需要处理的数据文件
(要注意路径是否正确,可以是相对路径也可以是绝对路径)
r的作用:加上 r 就是保持字符串原始值的含义
,即不对其中的符号进行转义
。
代码示例:
data = pd.read_excel(r'新订单表(1).xlsx')
data
运行结果:
3. 加工时间数据
采用Series.dt.dayofweek
属性以在给定Series对象的基础数据中返回给定日期时间的星期几。现在我们将使用Series.dt.dayofweek
属性以在给定Series对象的基础数据中返回给定日期时间的星期几。正如我们在输出中看到的,Series.dt.dayofweek
属性已成功访问并返回给定系列对象的基础数据中的星期几。
aggregate()是聚合函数,可以简写为agg()。它可以将很多统计函数聚合在一起。
代码示例:
data['星期'] = data['用餐开始时间'].dt.dayofweek+1
data['小时数'] = data['用餐开始时间'].agg(lambda x:x.hour)
data
运行结果:
4.分组聚合求各个星期各个小时的订单数量
groupby()的作用就是为数据分组,然后在分组的基础上再做数据的分析。
count有两个作用:统计某个字段有值的记录数;统计结果集的记录数。
rename函数 用于列名重命名。
代码示例:
result = data.groupby(by=['小时数','星期'])['订单编号'].count().rename('订单总数')
result
运行结果:
5.构造热力图的横轴、纵轴标签以及值数据结构
代码示例:
# 横轴、纵轴数据构造
x_list = [str(i+1) for i in range(24)]
y_list = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
# 值数据构造
hour_list = [i+1 for i in range(24)]
xingqi_list = [i+1 for i in range(7)]
value_list = []
for i in range(len(hour_list)):
for j in range(len(xingqi_list)):
try:
value_list.append([i,j,int(result[hour_list[i],xingqi_list[j]])])
except Exception as e:
# print(e)
value_list.append([i,j,0])
value_list
运行结果:
6.画热力图的一些配置项
热力图heatmap可以表示三维信息,由于用颜色表示,相比数值没那么精确,多数用来表示变化趋势。
先导入画热力图需要的库
width:设置热力图的宽度
height:设置热力图的高度
color:表格中数字的颜色
range_color:表格中数据越高颜色越深,可以有三种及三种以上多种颜色
代码示例:
import pyecharts.options as opts
from pyecharts.charts import HeatMap
c = (
HeatMap(init_opts=opts.InitOpts(width="800px", height="400px"))
.add_xaxis(xaxis_data=x_list)
.add_yaxis(
series_name="用餐人数",
yaxis_data=y_list,
value=value_list,
label_opts=opts.LabelOpts(
is_show=True,
color="#fff",
position="inside",
),
)
.set_global_opts(
legend_opts=opts.LegendOpts(is_show=False),
xaxis_opts=opts.AxisOpts(
type_="category",
splitarea_opts=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
yaxis_opts=opts.AxisOpts(
type_="category",
splitarea_opts=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
visualmap_opts=opts.VisualMapOpts(
min_=0, max_=50,
orient="horizontal",
pos_left="center",
range_color = ['#e5dec3','orange','red']
),
)
)
c.render_notebook()
运行结果:
四、总结
综上所述,Python Heatmap是数据可视化中非常重要的一种技术,也是我们必须掌握的技术之一。在实际工作中,我们可以灵活运用这些技巧来绘制各种各样的Heatmap,以更好地展示数据。