前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文献配套GitHub发表级别绘图03-条形图

文献配套GitHub发表级别绘图03-条形图

作者头像
生信技能树
发布2022-03-03 14:20:55
1.5K0
发布2022-03-03 14:20:55
举报
文章被收录于专栏:生信技能树

下面是去年实习生的分享

author: "ylchen"

文章来源:"Preoperative immune landscape predisposes adverse outcomes in hepatocellular carcinoma patients with liver transplantation" (2021,npj Precision Oncology),数据与代码全部公开在https://github.com/sangho1130/KOR_HCC。

下面来实现Fig.2a的条形图(barplots)

一、数据载入

代码语言:javascript
复制
rm(list = ls())
library(reshape2)
library(ggplot2)
library(RColorBrewer)
data <- read.table('../data/Figure 2A input relative score.txt', sep = "\t",header = TRUE, check.names = FALSE)
# 变成因子,调整顺序
data$Status <- factor(data$Status, c("Normal", "FL", "FH", "CS", "DL", "DH", "Nontumor", "Tumor"))
# 行为样本类型,列为细胞
head(data)
# ggplot 画图需要 宽数据变成 长数据 
melt.data <- melt(data, variable.name = 'Cell', value.name = 'Relative')
head(melt.data)

基础R包---reshape2包

melt-把宽格式数据转化成长格式。

cast-把长格式数据转化成宽格式。(dcast-输出时返回一个数据框。acast-输出时返回一个向量/矩阵/数组。)

cast 函数的作用除了还原数据外,还可以对数据进行整合。

dcast 输出数据框。公式的左边每个变量都会作为结果中的一列,而右边的变量被当成因子类型,每个水平都会在结果中产生一列。

reshape2

(另外,tidyr包中gather和spread函数也能实现功能哦!)

二、条形图(相对比例)

代码语言:javascript
复制
# 8个样品组的 22种免疫细胞比例 
p <- ggplot(melt.data ,aes(x = Status, # 设置x轴 
                           y = Relative, # 设置y轴
                           fill = Cell))+ # 设置图形填充变量
  geom_bar(stat="identity") + #stat="count"表示条形的高度是y变量的数量    
  #stat="identity"表示条形的高度是y变量的值
  scale_fill_manual(values = colorRampPalette(brewer.pal(11, "Spectral"))(22)) + # 设置填充颜色
  theme_bw() + # 空白背景
  theme(axis.text = element_text(colour = 'black'), #刻度值
        axis.text.x = element_text(angle = 90, hjust = 1), # x轴刻度值
        panel.grid = element_blank()) + # 空白网格线
  labs(x = '', y = 'Relative fraction') # 设置xy轴标签
p
#ggsave('../results/Figure 2A input relative score.pdf', p)

两个知识点

上面画图函数涉及到了颜色与theme的设置,接下来介绍下这两个知识点。

1. 详解RColorBrewer包

  • ggplot2画图时会自带配色设置,但一般比较难看。当想使用一些高级,现有的颜色搭配时,不妨考虑下RColorBrewer包。
  • 下面介绍下基本用法
代码语言:javascript
复制
library(RColorBrewer)
display.brewer.all() # 查看所有颜色
# brewer.pal.info  # 返回画板名,最大颜色数,调色板类型,是否对色盲友好

RColorBrewer包提供三种配色方案

  1. 连续型Sequential, 颜色渐变。
  2. 极端型Diverging,生成深色强调两端、浅色表示中部的颜色,可用来标注数据中的离群点。
  3. 离散型Qualitative,生成彼此差异明显的颜色,通常用来标记分类数据。

说明书:https://cran.r-project.org/web/packages/RColorBrewer/RColorBrewer.pdf

在线版:https://colorbrewer2.org/#type=sequential&scheme=BuGn&n=3

display函数显示颜色

代码语言:javascript
复制
# 单独查看分类
display.brewer.all(type = "seq")  # 单独查看第1类颜色
display.brewer.all(type = "qual")
display.brewer.all(type = "div")

代码语言:javascript
复制
# 选择颜色块及数量
cols <- brewer.pal(n=3, name="BuGn")
# name: the name of the color palette you want to use
# n: the number of colors you want from the palette (integer)
cols
# 可视化
display.brewer.pal(n=3, name="BuGn")

加入到ggplot2

主要通过scale_fill_manual函数添加颜色

  1. 先选择色块:调用Spectral调色板,取11个颜色,赋值给cols
  2. 把cols赋值给colorRampPalette
  3. 添加到ggplot2:scale_fill_manual
代码语言:javascript
复制
# 过程如下:先选择色块
# 调用Spectral调色板,取11个颜色,赋值给cols
cols <- brewer.pal(11, "Spectral") 
# 可视化
display.brewer.pal(11, "Spectral")
# 把cols赋值给colorRampPalette
pal <- colorRampPalette(cols) 
image(volcano, col=pal(22)) 
# 数据集volcano,颜色设置为:Spectral调色板选择11个颜色,在这11个颜色之间进行连续取值(共22个颜色)
# 若添加到ggplot2
# scale_fill_manual(values = colorRampPalette(brewer.pal(11, "Spectral"))(22))

2. theme用法

相信大家也留意到上面设置theme时使用了几个函数,但实际上还有很多内容可以调整,下面这个图简直是宝藏!

代码语言:javascript
复制
  theme(axis.text = element_text(colour = 'black'), # 刻度值
        axis.text.x = element_text(angle = 90, hjust = 1), # x轴刻度值
        panel.grid = element_blank()) # 空白网格线

参考:https://ggplot2.tidyverse.org/reference/theme.html

三、条形图(相对比例)

  • 其实就是输入数据的不同
代码语言:javascript
复制
data <- read.table('../data/Figure 2A input absolute score.txt', sep = "\t",header = TRUE, check.names = FALSE)
head(data)
data$Status <- factor(data$Status, c("Normal", "FL", "FH", "CS", "DL", "DH", "Nontumor", "Tumor"))
melt.data <- melt(data, variable.name = 'Cell', value.name = 'Absolute')
head(melt.data)
p <- ggplot(melt.data ,aes(x = Status, y = Absolute, fill = Cell)) + 
  geom_bar(stat="identity") + 
  scale_fill_manual(values = colorRampPalette(brewer.pal(11, "Spectral"))(22)) + 
  theme_bw() + 
  theme(axis.text = element_text(colour = 'black'),
        axis.text.x = element_text(angle = 90, hjust = 1),
        panel.grid = element_blank()) + 
  labs(x = '', y = 'Absolute fraction')
p
#ggsave('../results/Figure 2A input absolute score.pdf', p)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、条形图(相对比例)
    • 1. 详解RColorBrewer包
      • display函数显示颜色
        • 加入到ggplot2
          • 2. theme用法
          • 三、条形图(相对比例)
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档