R实用绘图-- 色块图 / 瓦片图 / 热图

image-20231215163750639

R实用绘图系列主要是带领大家绘制一些实用、好看而又不太复杂的科研常用图形,主打一个实用,该系列会持续更新,有需要的小伙伴赶紧关注起来吧。

那我们就正式开始啦。

说明

今天带领大家绘制的是色块图,色块图通过颜色的差异来反映数值的大小,能够直观地展示数据的模式、趋势和关联性,适用于呈现矩阵数据、时间序列数据等多种数据类型。

色块图没有用到其他的绘图包,只用到了ggplot2包中的geom_tile()函数,除了geom_tile()之外,ggplot2中绘制色块图的函数还有geom_rect()、geom_raster()。三个函数的差异如下:

  • geom_tile()采用x, y, width, height参数控制色块位置和大小,其中x、y指定色块中心位置坐标,width、height指定色块的宽和高。
  • geom_rect() 采用xmin, xmax, ymin, ymax参数控制色块四个角的位置。
  • geom_raster()是只能在所有色块的规格都一样的情况下使用,绘图速度会比前两个快。

除了这些差异之外,三个函数的作用和用法几乎相同。

加载包

# 加载包
library(reshape)
library(ggplot2)

数据准备

# 创建数据
set.seed(8)
m <- matrix(round(rnorm(120), 2), 15,8)
colnames(m) <- paste0("Row", 1:8)
rownames(m) <- paste0("Col", 1:15)
df <- melt(m)
colnames(df) <- c("x", "y", "value")
df$pvalue <- runif(120, 0, 0.5)

创造示例数据如图所示,x为列名,y为行名,value是x与y之间对应的数值大小,可以是相关系数值等。pvalue是显著性值,也可以是其他你想要通过设定阈值来添加特定标记的值。

image-20231215152712521

绘图1:反映数值大小

# 反映数值大小
ggplot(df, aes(x = x, y = y, fill = value)) +
  geom_tile(color = "white", # 设置小格子边框颜色
            lwd = 1, # 设置小格子的边框宽度
            linetype = 1) + # 设置小格子的边框线型
  scale_fill_continuous(low='white',high='#4876FF')+
  theme_minimal()+
  theme(panel.grid = element_blank())+ # 去除网格线
  xlab("")+ # 去除横轴标题
  ylab("")+ # 去除纵轴标题
  coord_fixed() # 设置x轴与y轴的单位长度相等

ggsave('plot1.pdf',width = 7,height = 4)

plot1

绘图2:反映数值大小、正负、显著性

# 反映数值大小、数值正负和显著性
ggplot(df, aes(x = x, y = y, fill = value)) +
  geom_tile(
    color = "#FAFAFA", # 设置小格子边框颜色
    lwd = 0.8, # 设置小格子的边框宽度
    linetype = 1) + # 设置小格子的边框线型
  scale_fill_gradient2(low = '#619CFF',
                       mid = 'white',
                       high = '#F8766D',
                       midpoint = 0)+ #设置中间颜色对应的数值
  geom_text(aes(label = ifelse(pvalue < 0.05, "*","")), 
            size = 5, # 设置标签文本大小
            color = "#696969") + # 设置标签文本颜色
  theme_minimal()+
  theme(panel.grid = element_blank())+ # 去除网格线
  xlab("")+ # 去除横轴标题
  ylab("")+ # 去除纵轴标题
  coord_fixed() # 设置x轴与y轴的单位长度相等
ggsave('plot2.pdf',width = 7,height = 4)

plot2

合集文章

R实用绘图–相关性热图

R实用绘图–韦恩图

R实用绘图–桑基图 / 冲击图 / networkD3

R实用绘图 --色块图 / 瓦片图 / 热图

本期的内容就到这里了,喜欢的小伙伴,欢迎点赞、转发、收藏哦!

关注数据之帆,成为一帆的原始粉丝,和一帆一起进步吧!

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值