赞
踩
目录
关键点在于数据转换步骤和数据比例计算步骤,然后个性化调整图。
①data <- melt(dat, id.vars = c("ID"))##根据分组变为长数据
②#计算百分比##
data2 <- ddply(data,
"ID", ##需展示的X轴列名
transform,
percent = value / sum(value) * 100)#相当于按照样本分组,然后计算比例
#只提取需要的行
data2a <- data2[data2$variable=="high",]
data2a$percent <- round(data2a$percent,3)
- rm(list = ls())
- library(ggplot2)
- library(tidyverse)
- library(reshape)
- library(plyr)
- library(patchwork)
- dat <- as.data.frame(cbind(1:5, 5:1))
- colnames(dat) <- c("high","low")
- dat$ID <- paste0("samp",1:nrow(dat))
head(dat) high low ID 1 1 5 samp1 2 2 4 samp2 3 3 3 samp3 4 4 2 samp4 5 5 1 samp5
需要进行数据转换
- ##数据转换##
- data <- melt(dat, id.vars = c("ID"))##根据分组变为长数据
- p <- ggplot(data = data,
- aes(x=ID,y=value,fill=variable))+
- #geom_bar(stat = "identity",position = "stack")+ ##展示原来数值
- geom_bar(stat = "identity",position = "fill")+ ##按照比例展示:纵坐标为1
- scale_y_continuous(expand = expansion(mult=c(0.01,0.1)),##展示纵坐标百分比数值
- labels = scales::percent_format())+
- scale_fill_manual(values = c("high"="#98d09d","low"="#e77381"), ##颜色调整
- limits=c("high","low"))+ ##limit调整图例顺序
- theme(panel.background = element_blank(), ##主题设置
- axis.line = element_line(),
- legend.position = "bottom")+
- labs(title = "Title",x=NULL,y="percent")+ ##X,Y轴设置
- guides(fill=guide_legend(title = NULL,nrow = 1,byrow = FALSE))
- p
- #dev.off()
计算百分比
- #计算百分比##
- data2 <- ddply(data,
- "ID", ##需展示的X轴列名
- transform,
- percent = value / sum(value) * 100)#相当于按照样本分组,然后计算比例
- #只提取需要的行
- data2a <- data2[data2$variable=="high",]
- data2a$percent <- round(data2a$percent,3)
head(data2a) ID variable value percent 1 samp1 high 1 16.667 3 samp2 high 2 33.333 5 samp3 high 3 50.000 7 samp4 high 4 66.667 9 samp5 high 5 83.333
绘图
- p1 <- ggplot(data = data,
- aes(x=ID,y=value,fill=variable))+
- #geom_bar(stat = "identity",position = "stack")+ ##展示原来数值
- geom_bar(stat = "identity",position = "fill")+ ##按照比例展示:纵坐标为1
- scale_y_continuous(expand = expansion(mult=c(0.01,0.1)),##展示纵坐标百分比数值
- labels = scales::percent_format())+
- scale_fill_manual(values = c("high"="#98d09d","low"="#e77381"), ##颜色调整
- limits=c("high","low"))+ ##limit调整图例顺序
- geom_text(data=data2a,
- aes(x=ID,y=1,
- label=paste0(value,"\n",#跨行
- "(",percent,")")),
- inherit.aes = FALSE,
- vjust=-0.2)+
- theme(panel.background = element_blank(), ##主题设置
- axis.line = element_line(),
- legend.position = "bottom")+
- labs(title = "Title",x=NULL,y="percent")+ ##X,Y轴设置
- guides(fill=guide_legend(title = NULL,nrow = 1,byrow = FALSE))
-
- p1
- #dev.off()

合图
- p2 <-p+ p1
- p2
补充:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。