前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >绘制高颜值的云雨图

绘制高颜值的云雨图

原创
作者头像
用户10391424
发布2023-03-18 18:51:05
4630
发布2023-03-18 18:51:05
举报
文章被收录于专栏:单细胞转录组测序

#R包下载与载入:

library(remotes)

remotes::install_github('jorvlan/raincloudplots')

library(raincloudplots)

library(ggplot2)

##

#绘图数据整理:

head(iris) #以鸢尾数据集为例;

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species

# 1 5.1 3.5 1.4 0.2 setosa

# 2 4.9 3.0 1.4 0.2 setosa

# 3 4.7 3.2 1.3 0.2 setosa

# 4 4.6 3.1 1.5 0.2 setosa

# 5 5.0 3.6 1.4 0.2 setosa

# 6 5.4 3.9 1.7 0.4 setosa

#需使用特定函数转化为绘图所需格式:

dt1 <- data_1x1(

array_1 = iris$Sepal.Length[1:50], #分组1

array_2 = iris$Sepal.Length[51:100], #分组2

jit_distance = 0.09, #抖动点间的距离

jit_seed = 123#设置随机数种子

)

head(dt1)

# y_axis x_axis id jit

# 1 5.1 1 1 0.9617640

# 2 4.9 1 2 1.0518949

# 3 4.7 1 3 0.9836158

# 4 4.6 1 4 1.0689431

# 5 5.0 1 5 1.0792841

# 6 5.4 1 6 0.9182002

#1.1 横向云雨图绘制:

p1 <- raincloud_1x1(

data = dt1,

colors = (c('#0da9ce','#e74a32')), #描边颜色

fills = (c('#0da9ce','#e74a32')), #填充颜色

size = 1.2, #散点大小

alpha = 0.5, #不透明度

ort = 'h' #横向,v则纵向云雨图

) +

scale_x_continuous(breaks = c(1.4, 2.4),#间距

labels = c("setosa", "versicolor"),#标签

limits = c(0.8, 3)) + #通过限制/修改坐标轴来更改云雨图位置[两个分组的x轴坐标在绘图数据中为1和2]

labs(x = "Species", y = "Sepal.Length") +

theme_classic()

p1

#1.2 纵向云雨图绘制:在上面的基础上进行了翻转操作

p2 <- raincloud_1x1(

data = dt1,

colors = (c('#0da9ce','#e74a32')),

fills = (c('#0da9ce','#e74a32')),

size = 1.2,

alpha = 0.5,

ort = 'v' #翻转

) +

scale_x_continuous(breaks = c(1.4, 2.4),

labels = c("setosa", "versicolor"),#x轴标签

limits = c(0.8, 3)) +

labs(x = "Species", y = "Sepal.Length") +

theme_classic()

p2

#1.3 配对云雨图绘制:

head(dt1) #对两组中的相同id进行配对;

p3 <- raincloud_1x1_repmes(

data = dt1,

colors = (c('#0da9ce','#e74a32')),

fills = (c('#0da9ce','#e74a32')),

size = 1.6,

alpha = 0.5,

line_color = 'grey', #配对连线颜色

line_alpha = 0.8, #配对连线不透明度

align_clouds = FALSE

# align_clouds = T#是否对齐云朵[默认F为展开,若为T则将云朵对齐放在一侧]

) +

scale_x_continuous(breaks = c(0.6, 2.4),

labels = c("setosa", "versicolor"),

limits = c(0, 3)) +

labs(x = "Species", y = "Sepal.Length") +

theme_classic()

p3

# #对齐云朵:

# p4 <- raincloud_1x1_repmes(

# data = dt1,

# colors = (c('#0da9ce','#e74a32')),

# fills = (c('#0da9ce','#e74a32')),

# size = 1.6,

# alpha = 0.5,

# line_color = 'grey',

# line_alpha = 0.8,

# align_clouds = TRUE #云朵放在一侧

# ) +

# scale_x_continuous(breaks = c(1, 2.4),

# labels = c("setosa", "versicolor"),

# limits = c(0.5, 3)) +

# labs(x = "Species", y = "Sepal.Length") +

# theme_classic()

# p4

#2.1 双刻度重复配对云雨图绘制

#绘图数据整理:

dt2 <- data_2x2(

array_1 = iris$Sepal.Length[1:50],

array_2 = iris$Sepal.Length[51:100],

array_3 = iris$Sepal.Length[101:150],

array_4 = iris$Sepal.Length[81:130], #共设定4个数组

labels = (c('control','test')), #两个组标签的连接字符串

jit_distance = 0.09,

jit_seed = 123,

spread_x_ticks = FALSE) # 2个x_axis为 FALSE,如果4个x_axis则为TRUE

head(dt2)

p5 <- raincloud_2x2_repmes(

data = dt2,

colors = (c('#0273c2', '#efc001', '#0273c2', '#efc001')),

fills = (c('#0273c2', '#efc001', '#0273c2', '#efc001')),

size = 1.5,

alpha = 0.6,

spread_x_ticks = FALSE

) +

scale_x_continuous(breaks = c(0.5, 2.5),

labels = c("day1", "day10"),

limits = c(0, 3)) +

labs(x = "Time", y = "Length") +

theme_classic()

p5

#2.2 四刻度重复配对云雨图绘制

#绘图数据整理:

dt3 <- data_2x2(

array_1 = iris$Sepal.Length[1:50],

array_2 = iris$Sepal.Length[51:100],

array_3 = iris$Sepal.Length[101:150],

array_4 = iris$Sepal.Length[81:130],

labels = (c('control','test')),

jit_distance = 0.09,

jit_seed = 123,

spread_x_ticks = TRUE) #4刻度(x_axis),设为T

tail(dt3)

p6 <- raincloud_2x2_repmes(

data = dt3,

colors = (c('#0273c2', '#efc001', '#0273c2', '#efc001')),

fills = (c('#0273c2', '#efc001', '#0273c2', '#efc001')),

size = 1.5,

alpha = 0.6,

spread_x_ticks = TRUE #4刻度,设为T

) +

scale_x_continuous(breaks = c(1,2,3,4),

labels = c("day1", "day10", "day1", "day10"),

limits = c(0, 5)) +

labs(x = "Time", y = "Length") +

theme_classic()

p6

#数据整理:

dt4 <- data_2x2(

array_1 = iris$Sepal.Length[1:50],

array_2 = iris$Sepal.Length[51:100],

array_3 = iris$Sepal.Length[101:150],

array_4 = iris$Sepal.Length[81:130],

array_5 = iris$Sepal.Length[21:70],

array_6 = iris$Sepal.Length[41:90],

labels = (c('control','test')),

jit_distance = 0.05,

jit_seed = 123)

tail(dt4)

##横向云雨图

p7 <- raincloud_2x3_repmes(

data = dt4,

colors = (c('#137b6a', '#a3bfe6', '#137b6a', '#a3bfe6', '#137b6a', '#a3bfe6')),

fills = (c('#137b6a', '#a3bfe6', '#137b6a', '#a3bfe6', '#137b6a', '#a3bfe6')),

size = 1.5,

alpha = 0.6,

ort = 'h'

) +

scale_x_continuous(breaks=c(1,2,3),

labels=c("D1", "D2", "D3"),

limits=c(0.7, 4)) +

labs(x = "Time", y = "Score") +

theme_classic()

p7

##可以用于绘画单细胞的数据基因对应细胞的表现

# 注意数据格式的转化

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档