前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >留言整理~ggplot2实现一幅自己叫不上来名字的图

留言整理~ggplot2实现一幅自己叫不上来名字的图

作者头像
用户7010445
发布2020-04-27 22:06:53
7050
发布2020-04-27 22:06:53
举报

写在前面:有了到B站做up主的想法,初步的想法是录制一些用R语言做数据处理和数据可视化的一些实例。大家如果刚好有数据处理或者数据可视化的问题可以给我的公众号留言。如果我刚刚好会用R语言来解决这个问题的话我就把解决这个问题录制成视频分享出来。

昨天的笔记《ggplot2实现一幅自己叫不上来名字的图》发出后,有三位小伙伴在文章下留言给出了不一样的解决办法,非常感谢!

今天的笔记整理下三位小伙伴的留言!

第一位留言说:在pheatmap中可以画的,通过先赋值ann_colors=list(group=c('Control'="#ff0000",'Treatment'="#0000FF")),这实现的

自己之前只用过pheatmap这个包做简单的热图,没有用到过ann_colors这个参数。

那么通过查看一下帮助文档来看一下这个参数的用法 查看帮助文档用到的是help(package="pheatmap")

首先构造一份数据集,画一个最基本的热图

代码语言:javascript
复制
test = matrix(rnorm(200), 20, 10)
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")
library(pheatmap)
pheatmap(test)

image.png

添加一些额外的信息

代码语言:javascript
复制
annotation_col = data.frame(
  CellType = factor(rep(c("CT1", "CT2"), 5)),
  Time = 1:5
)
annotation_col
rownames(annotation_col) = paste("Test", 1:10, sep = "")
annotation_col
pheatmap(test, annotation_col = annotation_col)
annotation_row = data.frame(
  GeneClass = factor(rep(c("Path1", "Path2", "Path3"), c(10, 4, 6)))
)
rownames(annotation_row) = paste("Gene", 1:20, sep = "")
pheatmap(test,
         annotation_col = annotation_col,
         annotation_row = annotation_row)

image.png

那么实现前一篇文章提到的图就有思路了:构造数据

代码语言:javascript
复制
df<-matrix(sample(1:10,10,replace = T),1,10)
df
rownames(df)<-"gene"
colnames(df)<-paste0("Sample",1:10)
pheatmap(df,cluster_cols = F,cluster_rows = F)
annotation_col = data.frame(
  CellType = factor(rep(c("CT1", "CT2"), 5)),
  Time = 1:5,
  teamA = factor(rep(c("Laker", "spur"), 5)),
  teamB = factor(rep(LETTERS[1:5],2)),
  teamC = factor(rep(c("NameA","NameB"),5))
)
rownames(annotation_col)<-colnames(df)
pheatmap(df,cluster_cols = F,
         cluster_rows = F,
         legend = F,
         annotation_col = annotation_col,
         border_color = NA,cellheight = 0.2,
         annotation_legend = F,
         labels_row = c(""))

image.png

遇到的问题是:图片上下空白太多,不知道如何用代码去掉上下的空白,想到的办法是出图后再裁剪。

自定义颜色:

代码语言:javascript
复制
ann_colors=list(teamA=c(Laker = "orange",spur = "darkgreen"),
                CellType=c(CT1="red",CT2="blue"),
                Time=c("grey","red"))
pheatmap(df,cluster_cols = F,
         cluster_rows = F,
         legend = F,
         annotation_col = annotation_col,
         border_color = NA,cellheight = 0,
         annotation_legend = F,
         labels_row = c(""),
         annotation_colors = ann_colors)

image.png

加上图例的效果

代码语言:javascript
复制
pheatmap(df,cluster_cols = F,
         cluster_rows = F,
         legend = F,
         annotation_col = annotation_col,
         border_color = NA,cellheight = 0,
         annotation_legend = T,
         labels_row = c(""),
         annotation_colors = ann_colors)

image.png

如何调整图例的位置,暂时想不到比较好的办法,出图后手动调整吧!

第二位的留言说:

试试这个 p1.2<-p1+theme(plot.margin=margin(b=-0.6,unit="cm")) p2.2<-p2+theme(plot.margin=margin(b=-0.6,unit="cm")) p3.2<-p3+theme(plot.margin=margin(b=-0.6,unit="cm")) library(patchwork) p1.2 / p2.2 / p3.2 + plot_layout(guides = 'collect') ggsave("1-3-7.png",width=30.2,height=15.2,units="cm",dpi=600)

运行代码看一下出图效果:

代码语言:javascript
复制
p1.2<-p1+theme(plot.margin=margin(b=-0.6,unit="cm"))
p2.2<-p2+theme(plot.margin=margin(b=-0.6,unit="cm"))
p3.2<-p3+theme(plot.margin=margin(b=-0.6,unit="cm"))
p1.2 / p2.2 / p3.2 + plot_layout(guides = 'collect')
ggsave("1-3-7.png",width=30.2,height=15.2,units="cm",dpi=600)

image.png

看起来好了很多,感谢感谢!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一位留言说:在pheatmap中可以画的,通过先赋值ann_colors=list(group=c('Control'="#ff0000",'Treatment'="#0000FF")),这实现的
  • 第二位的留言说:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档