• R语言绘制环状柱状堆积图+分组+显著性


    无叠加、显著性的代码:

    1. #设置工作环境
    2. rm(list=ls())
    3. setwd("D:/Desktop/0000/code-main/条形图")
    4. #加载R包
    5. library(ggplot2) # Create Elegant Data Visualisations Using the Grammar of Graphics
    6. library(tidyverse) # Easily Install and Load the 'Tidyverse'
    7. #加载数据(随机编写,无实际意义)
    8. df <- read.table("无叠加.csv", header = T, sep = ",")
    9. head(df)
    10. df$group <- factor(df$group,levels = c("M","N","G","F")) # 这几个字母表示不同的组,对应数据表格的第一个大组:group
    11. head(df)
    12. # ----------------------------------------
    13. ##计算标签角度
    14. df2 <- as.data.frame(df[c(1:10,11:22,23:34,35:46,47:48),]) # 重点:分别为不同组的对应的行。注意对应数据理解
    15. rownames(df2) <- 1:48
    16. df2$group <- factor(df2$group,levels = c("M","N","G","F"))
    17. df2$ID <- as.numeric(rownames(df2))
    18. number_of_bar <- nrow(df2)
    19. angle <- 90 - 360 * (df2$ID-0.5) /number_of_bar
    20. df2$hjust<-ifelse(angle < -90, 1, 0)
    21. df2$angle<-ifelse(angle < -90, angle+180, angle)
    22. #创建标签数据及位置
    23. df3 <- df2 %>%
    24. group_by(group) %>%
    25. summarize(start=min(ID), end=max(ID) - 4) %>%
    26. rowwise() %>%
    27. mutate(title=mean(c(start, end)))
    28. df3$group <- factor(df3$group,levels = c("M","N","G","F"))
    29. # ----------------------------------------
    30. #绘图
    31. ggplot()+
    32. #手动添加辅助线
    33. geom_hline(yintercept = 0,lty="solid", color = "black",linewidth=0.6)+
    34. geom_hline(yintercept = 20,lty="solid", color = "grey80")+
    35. geom_hline(yintercept = 60,lty="solid", color = "grey80")+
    36. geom_hline(yintercept = 40,lty="solid", color = "grey80")+
    37. geom_hline(yintercept = 80,lty="solid", color = "grey80")+
    38. geom_hline(yintercept = 100,lty="solid", color = "grey80")+
    39. #柱状堆积图绘制
    40. geom_col(df, mapping=aes(group3, value, fill = group), color = "grey20", linewidth = 0.25, width = 0.8)+
    41. # y轴范围确定
    42. scale_y_continuous(limits = c(-25,150))+
    43. # 颜色
    44. scale_fill_manual(values = c("#4fbb98","#f46024","#dd6ab0","#7c8ebe"))+
    45. # 主题
    46. theme_void()+
    47. theme(legend.position = 'none'
    48. )+
    49. # 手动添加显著性
    50. geom_text(data=df2, aes(x=ID, y=103, label=c("Contral", "ADOM", "LHy1","LHA", "LFA","SHy1","SHA","SFA","RHy1","RHA"," "," ",
    51. "Contral", "ADOM", "LHy1","LHA", "LFA","SHy1","SHA","SFA","RHy1","RHA"," "," ",
    52. "Contral", "ADOM", "LHy1","LHA", "LFA","SHy1","SHA","SFA","RHy1","RHA"," "," ",
    53. "Contral", "ADOM", "LHy1","LHA", "LFA","SHy1","SHA","SFA","RHy1","RHA"," "," "),
    54. hjust=hjust,color=group),
    55. fontface="bold", size=3,
    56. angle= df2$angle, inherit.aes = F)+
    57. #手动添加坐标
    58. geom_text(data=df2, x=-0.3,y=5,label="0",color="black",size=3)+
    59. geom_text(data=df2, x=-0.3,y=25,label="20",color="black",size=3)+
    60. geom_text(data=df2, x=-0.3,y=45,label="40",color="black",size=3)+
    61. geom_text(data=df2, x=-0.3,y=65,label="60",color="black",size=3)+
    62. geom_text(data=df2, x=-0.3,y=85,label="80",color="black",size=3)+
    63. geom_text(data=df2, x=-0.3,y=105,label="100",color="black",size=3)+
    64. #极坐标转换
    65. coord_polar(direction=1)+
    66. ##分组标签
    67. geom_text(data=df3, aes(x = title, y = 140, label=group,color=group),
    68. hjust=c(1,1,0,0), angle=c(335,250,135,60), size=5,
    69. fontface="bold", inherit.aes = F)+
    70. #颜色
    71. scale_color_manual(values = c("#4fbb98","#f46024","#dd6ab0","#7c8ebe"))

    带叠加、显著性的代码:

    1. #设置工作环境
    2. rm(list=ls())
    3. setwd("D:/Desktop/0000/code-main/条形图")
    4. #加载R包
    5. library(ggplot2) # Create Elegant Data Visualisations Using the Grammar of Graphics
    6. library(tidyverse) # Easily Install and Load the 'Tidyverse'
    7. #加载数据(随机编写,无实际意义)
    8. df <- read.table("叠加.csv", header = T, sep = ",")
    9. head(df)
    10. df$group <- factor(df$group,levels = c("M","N","G","F")) # 这几个字母表示不同的组,对应数据表格的第一个大组:group
    11. head(df)
    12. # ----------------------------------------
    13. ##计算标签角度
    14. df2 <- as.data.frame(df[c(1:10,51:62,103:114,155:166,207:208),])
    15. rownames(df2) <- 1:48
    16. df2$group <- factor(df2$group,levels = c("M","N","G","F"))
    17. df2$ID <- as.numeric(rownames(df2))
    18. number_of_bar <- nrow(df2)
    19. angle <- 90 - 360 * (df2$ID-0.5) /number_of_bar
    20. df2$hjust<-ifelse(angle < -90, 1, 0)
    21. df2$angle<-ifelse(angle < -90, angle+180, angle)
    22. #确定显著性标签位置
    23. result <- aggregate(value ~ group3, data = df, sum)
    24. #创建标签数据及位置
    25. df3 <- df2 %>%
    26. group_by(group) %>%
    27. summarize(start=min(ID), end=max(ID) - 4) %>%
    28. rowwise() %>%
    29. mutate(title=mean(c(start, end)))
    30. df3$group <- factor(df3$group,levels = c("M","N","G","F"))
    31. # ----------------------------------------
    32. #绘图
    33. ggplot()+
    34. #手动添加辅助线
    35. geom_hline(yintercept = 0,lty="solid", color = "black",linewidth=0.6)+
    36. geom_hline(yintercept = 20,lty="solid", color = "grey80")+
    37. geom_hline(yintercept = 60,lty="solid", color = "grey80")+
    38. geom_hline(yintercept = 40,lty="solid", color = "grey80")+
    39. geom_hline(yintercept = 80,lty="solid", color = "grey80")+
    40. geom_hline(yintercept = 100,lty="solid", color = "grey80")+
    41. #柱状堆积图绘制
    42. geom_col(df, mapping=aes(group3, value, fill = group), color = "grey20", linewidth = 0.5, width = 0.8)+
    43. #y轴范围确定
    44. scale_y_continuous(limits = c(-25,150))+
    45. #颜色
    46. scale_fill_manual(values = c("#4fbb98","#f46024","#dd6ab0","#7c8ebe"))+
    47. #主题
    48. theme_void()+
    49. theme(legend.position = 'none'
    50. )+
    51. #手动添加显著性
    52. geom_text(data=df2, aes(x=ID, y=103, label=c("Contral", "ADOM", "LHy1","LHA", "LFA","SHy1","SHA","SFA","RHy1","RHA"," "," ",
    53. "Contral", "ADOM", "LHy1","LHA", "LFA","SHy1","SHA","SFA","RHy1","RHA"," "," ",
    54. "Contral", "ADOM", "LHy1","LHA", "LFA","SHy1","SHA","SFA","RHy1","RHA"," "," ",
    55. "Contral", "ADOM", "LHy1","LHA", "LFA","SHy1","SHA","SFA","RHy1","RHA"," "," "),
    56. hjust=hjust,color=group),
    57. fontface="bold", size=3,
    58. angle= df2$angle, inherit.aes = F)+
    59. #手动添加标签
    60. geom_text(data=df2, aes(x=ID, y=result$value+4,
    61. label=c("", "", "***","", "","","**","","","","","",
    62. "", "", "**","", "","","","***","","","","",
    63. "", "***", "***","***", "**","***","**","***","**","***","","",
    64. "", "***", "","", "","","","**","**","","",""),
    65. color=group),
    66. fontface="bold", size=4,
    67. angle= df2$angle+90, inherit.aes = F)+ #标签
    68. #手动添加坐标及标题
    69. geom_text(data=df2,x=11,y=30, label="Biodegradation rate(%)",color="black",size=3.5)+
    70. geom_text(data=df2, x=-0.2,y=5,label="0",color="black",size=3)+
    71. geom_text(data=df2, x=-0.2,y=25,label="20",color="black",size=3)+
    72. geom_text(data=df2, x=-0.2,y=45,label="40",color="black",size=3)+
    73. geom_text(data=df2, x=-0.2,y=65,label="60",color="black",size=3)+
    74. geom_text(data=df2, x=-0.2,y=85,label="80",color="black",size=3)+
    75. geom_text(data=df2, x=-0.2,y=105,label="100",color="black",size=3)+
    76. #极坐标转换
    77. coord_polar(direction=1)+
    78. ##分组标签
    79. geom_text(data=df3, aes(x = title, y = 140, label=group,color=group),
    80. hjust=c(1,1,0,0), angle=c(335,250,135,60), size=5,
    81. fontface="bold", inherit.aes = F)+
    82. #颜色
    83. scale_color_manual(values = c("#4fbb98","#f46024","#dd6ab0","#7c8ebe"))

  • 相关阅读:
    智能汽车能否真正实现无人驾驶,为什么?
    bind服务编译安装及压力测试
    5分钟掌握接口自动化测试,4个知识点简单易学!
    【C语言】详解 memset() 函数用法
    面试背诵版—操作系统
    Vue2和Vue3的响应式原理及区别
    SSO单点登录
    linux基础:4:gdb的使用
    design compiler中的drc规则详解
    计算机毕业设计(附源码)python疫情综合管控系统平台
  • 原文地址:https://blog.csdn.net/qq_45100200/article/details/133198468