❝最近有朋友询问绘制热图时如何使刻度条展示为从「0-1」,这就涉及对数据进行标准的特殊处理,通常对数据进行处理无外乎「取log」或者直接使用「scale()函数进行标准化」,但是要达到从「0-1」的效果这两种方法显然实现不了,因此需要自定义函数来对数据进行标准化处理。下面小编就通过一个案例来进行展示,希望各位观众老爷能够喜欢。 ❞
library(tidyverse)
library(vegan)
devtools::install_github("thomasp85/scico")
library(scico)
data("varechem") # 导入varechem数据集,该数据集包含了生态学变量的测量数据
# 数据清洗
df <- varechem %>% # 将varechem数据集赋值给df,并进行列的选择和删除
select(1:14) %>% # 选择第1到14列的数据
select(-c(Humdepth,Baresoil)) # 删除Humdepth和Baresoil列的数据
df_normalized <- as.data.frame(apply(df, 2, function(x) (x - min(x)) / (max(x) - min(x))))
varechem %>% # 将varechem数据集进行操作
rownames_to_column(var="id") %>% # 将行名转为列名,并将该列名命名为id
select(id) %>% # 选择id列
bind_cols(.,df_normalized) %>% # 将id列和df_normalized数据框进行列绑定
pivot_longer(-id) %>% # 对数据进行长格式转换,id列保持不变
ggplot(aes(name,id,fill=value))+ # 设置绘图的数据映射
geom_tile()+ # 绘制瓷砖图
labs(x=NULL,y=NULL)+ # 设置x和y轴标签为空
scale_fill_scico(palette="vik")+ # 设置填充颜色的配色方案为"vik"
scale_y_discrete(expand=c(0,0),position = 'left')+ # 设置y轴为离散型,并将标签显示在左侧
scale_x_discrete(expand=c(0,0))+ # 设置x轴为离散型
theme(plot.background = element_blank(), # 设置绘图的背景为空白
panel.background = element_blank(), # 设置面板的背景为空白
axis.text=element_text(color="black",size=8), # 设置坐标轴文本的颜色为黑色,大小为8
axis.ticks = element_blank(), # 设置坐标轴刻度为空白
legend.background = element_blank(), # 设置图例的背景为空白
legend.text = element_text(color="black"), # 设置图例文本的颜色为黑色
legend.title = element_blank(), # 设置图例标题为空白
legend.spacing.x = unit(0.1,"cm"))+ # 设置图例水平间距为0.1厘米
guides(fill=guide_colorbar(direction="vertical",reverse=F,barwidth=unit(.5,"cm"),barheight=unit(11,"cm")))