R语言 绘制上下双向分布柱状图

话不多说,直接上干货

R语言 绘制上下双向分布柱状图_第1张图片

 library(ggplot2)
library(tidyr)
set.seed(123)  # 设置随机种子保证可重现
df <- data.frame(
  Type = rep(letters[1:5], each = 5),
  Sample = paste("sample",rep(1:5, times = 5),sep=""),
  Up = round(runif(25, min = 0, max = 100), 1),
  Down = round(runif(25, min = 0, max = 100), 1)
)
data<-gather(df,group,number,-c("Type","Sample"))
p<-ggplot(data, aes(x=Sample, y=ifelse(group=="Up", number, -number), fill=Type ) )+
  geom_bar(stat="identity",position = "stack",width=0.5)+
  scale_fill_manual(values=c("#b53333","#0069aa","#f39d5b","#2eacaf","#be67d3"))+
  scale_y_continuous(labels=abs,breaks=seq(-500,500,100))+
  theme_classic()+
  geom_segment(aes(y = 0, yend = 0,x = 0, xend = 6))+
theme(axis.line.x = element_blank(),axis.ticks.x = element_blank(),axis.text.x = element_blank())+
  labs(x="", y="", title="")+
  annotate("text", x = 3 , y = 501,label = "Up",colour="black",size=5)+
  annotate("text", x = 3 , y = -501,label = "Down",colour="black",size=5)+
  theme(
    axis.text.x = element_text(size=0),
    axis.text.y = element_text(size=9)
  )
ggsave("test.pdf",p)

你可能感兴趣的:(R语言 绘制上下双向分布柱状图)