利用ggplot2绘制多角图绘制






利用ggplot2绘制多角图绘制

生信果  2023-03-04 19:00:37

收录于话题

#R代码#生信绘图


今天利用ggplot2来进行多角图的绘制,代码如下:


1. 安装需要的R包

install.packages(“ggplot2”)


2. 导入需要的R包

library(ggplot2)


3. 示例代码

raw.data <- read.table(“group.txt”, header = T, stringsAsFactors = T)
# 记录末列的名称txt <- colnames(raw.data)[ncol(raw.data)]## 计算坐标轴角度sides <- ncol(raw.data) - 1 # 边的个数(列数减1,因为有末列)start_angle <- 90 # 开始角度basis <- t(sapply((1:sides)-1, function(i){  c(cos(2 * i * pi / sides + start_angle * pi / 180),    sin(2 * i * pi / sides + start_angle * pi / 180))}))## 将12维的数据坐标投射到二维data <- as.matrix(raw.data[, -match(txt, colnames(raw.data))]) %*% basis# 准备绘图数据### 点的数据plot.data <- data.frame(  "x" = data[, 1],  "y" = data[, 2],  "Group" = raw.data$celltype)### 多边形的数据basis <- data.frame(  "x" = basis[, 1],  "y" = basis[, 2])### 类图例的数据label <- data.frame(  "x" = 1.1 * basis[, 1],  "y" = 1.1 * basis[, 2],  "label" = colnames(raw.data)[-ncol(raw.data)])### 设定颜色(使用的是RGB颜色)color.palette <- list(  'hEndo'=   c(190,  10,  10),'hPeric'= c(225, 160,  30),'hMgl'=    c(217, 245,   7),  'hDA1'=    c(170, 180, 170),'hDA2'=   c(130, 140, 140),'hNbM'=    c(180, 140, 130),  'hNbML1'=  c(100, 100, 240),'hProgM'= c( 80, 235, 255),'hProgFPM'=c(190, 235, 255),  'hProgFPL'=c(210, 255, 215),'hProgBP'=c(230, 140, 120),'hNProg'=  c(255, 195,  28),  'hNbML5'=  c(139, 101, 100),'hRgl1'=  c(252, 183,  26),'hRgl3'=   c(214, 194,  39),  'hRgl2c'=  c(255, 120, 155),'hRgl2b'= c(250, 145,  45),'hRgl2a'=  c(250, 125,  25),  'hDA0'=    c(190, 200, 190),'hOPC'=   c(255,  35, 155),'hRN'=     c(199, 121,  41),  'hNbGaba'= c( 40,  55, 130),'hGaba'=  c(  7,  121, 61),'hOMTN'=   c( 95, 186,  70),  'hSert'=   c( 50, 180, 180),'eSCa'=   c(245, 205, 170),'eSCb'=    c(205, 245, 170),  'eSCc'=    c(205, 205, 220))color.palette <- lapply(color.palette, function(x){  rgb(red = x[1]/255, green = x[2]/255, blue = x[3]/255)})color.palette <- unlist(color.palette) # 最终的颜色格式为一个带名称的16进制字符串###开始绘图ggplot(plot.data, aes(x = x, y = y)) +  geom_point(aes(col = Group, size = .5)) +  geom_polygon(mapping = aes(x = x, y = y), data = basis,               fill = "transparent", color = "black", size = 1) +  geom_text(mapping = aes(x = x, y = y, label = label), data = label) +  scale_color_manual(values = color.palette) +  theme_classic() +  theme(axis.line = element_blank(),        axis.title = element_blank(),        axis.ticks = element_blank(),        axis.text = element_blank())ggsave("wheelplot.pdf", width = 10, height = 8) # 保存图形




代码合集

向上滑动阅览



生信人R语言学习必备

立刻拥有一个Rstudio账号

开启升级模式吧

(56线程,256G内存,个人存储1T)