查看: 451|回复: 6

[R语言] 如何轻松为图表添加好看的主题?

[复制链接]

管理员

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

主题
806
注册时间
2020.6.16
在线时间
439 小时

发表于 2022.9.21 09:43:50 | 显示全部楼层 |阅读模式
绘制好看的图表在科研中是一件非常重要但也非常耗时的事情。这里分享一个叫ggprism 的R包,可以轻松为ggplot2绘制的图表添加Prism软件所包含的各种好看主题。

下面就以具体的案例看下如何快速上手ggprism包。

1. 读入数据

  1. #读入本地数据;
  2. dt <- read.csv("test_group.csv",header = T)
  3. df <- read.csv("test.csv",header = T)
  4. #查看数据的前10行;
  5. head(df,10)
  6. head(dt,10)
复制代码


  1. #载入ggplot2包;
  2. library(ggplot2)
  3. #install.packages("ggpubr")
  4. #载入ggpubr包;
  5. library(ggpubr)
  6. library(ggprism)
  7. #查看ggprism自带的配色方案;
  8. names(ggprism_data$themes)
复制代码


  1. #我们也可以自定义颜色;
  2. mycolor <- c("#0077c1","#00a99e","#6bc72b","#ff5a20","#ff1620","#752995")
复制代码

2. 绘制图表

  1. #width为柱子宽度,0~1之间;
  2. #upper_errorbar绘制一半的误差线;
  3. p1 <- ggbarplot(df, x = "Group",
  4. y = "Expressions",
  5. color = "Group",
  6. fill = "Group",
  7. alpha =0.3,
  8. width=0.5,
  9. position = position_dodge(0.65),
  10. add = "mean_se",
  11. error.plot = "upper_errorbar")+
  12. xlab("")+
  13. scale_colour_manual(values=alpha(mycolor,1))+
  14. scale_fill_manual(values=alpha(mycolor,0.5))+
  15. theme(legend.position = "none")
  16. p1
复制代码


  1. #使用ggpubr绘制箱形图;
  2. p2 <- ggboxplot(dt, x = "Group",
  3. y = "Expressions",
  4. color = "Sex",
  5. fill = "Sex",
  6. alpha =0.2,
  7. width=0.6,
  8. add = "none")+
  9. guides(fill = "none")+
  10. xlab("")+
  11. scale_colour_manual(values=alpha(mycolor,1))+
  12. scale_fill_manual(values=alpha(mycolor,0.5))
  13. p2
复制代码


  1. #添加散点并自定义颜色;
  2. p3 <- ggboxplot(dt, x = "Group",
  3. y = "Expressions",
  4. fill = "Group",
  5. color = "Sex",
  6. width=0.6,
  7. add = "jitter") +
  8. xlab("")+
  9. guides(fill = "none")+
  10. scale_colour_manual(values=alpha(mycolor,1))+
  11. scale_fill_manual(values=alpha(mycolor,0.05))
  12. p3
复制代码


3. 应用主题

  1. #使用默认主题;
  2. p1+theme_prism(base_line_size =0.9)+
  3. theme(legend.position = "none")
复制代码


  1. #修改坐标轴样式为Offset;
  2. p3+scale_y_continuous(limits = c(0, 6), guide = "prism_offset")+
  3. scale_x_discrete(guide = "prism_offset")
复制代码


  1. #调整小刻度的数量;
  2. #使用prism.ticks.length调整小刻度的长度;
  3. p3+scale_y_continuous(limits = c(0, 6),
  4. minor_breaks = seq(0, 6, 1),
  5. guide = "prism_offset_minor")+
  6. scale_x_discrete(guide = "prism_offset")+
  7. theme(axis.ticks.length = unit(5, "pt"),
  8. prism.ticks.length.y = unit(4, "pt"))
复制代码


  1. #调整横轴样式为中括号;
  2. p3+scale_y_continuous(limits = c(0, 6),
  3. minor_breaks = seq(0, 6, 1),
  4. guide = "prism_offset_minor")+
  5. scale_x_discrete(guide = "prism_bracket")+
  6. theme(axis.ticks.length = unit(5, "pt"),
  7. prism.ticks.length.y = unit(4, "pt"))
复制代码


  1. #查看自带配色和颜色数;
  2. lengths(ggprism_data$colour_palettes)
复制代码


  1. #使用Prism中的purple_passion配色;
  2. p1 + scale_colour_prism(palette = "purple_passion")+
  3. scale_fill_prism(palette = "purple_passion")
复制代码


  1. #使用Prism中的candy_bright配色;
  2. p1 + scale_colour_prism(palette = "candy_bright")+
  3. scale_fill_prism(palette = "candy_bright")
复制代码


  1. #使用Prism中的autumn_leaves配色;
  2. p1 + scale_colour_prism(palette = "autumn_leaves")+
  3. scale_fill_prism(palette = "autumn_leaves")
复制代码


好啦,更多的配色方案这里就不一一测试了,本次的分享就到这里啦!

参考资料
https://csdaw.github.io/ggprism/index.html

*未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。

本文作者:基迪奥-莫北

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
新的一天加油!
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2019.4.24
在线时间
17 小时

发表于 2022.9.22 09:51:46 | 显示全部楼层
努力呀
新的一天加油!
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2019.4.24
在线时间
17 小时

发表于 2022.9.23 09:23:16 | 显示全部楼层
努力
新的一天加油!
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2016.5.10
在线时间
24 小时

发表于 2022.9.23 14:41:52 | 显示全部楼层
加油的第二十一天
新的一天加油!
回复 支持 反对

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2016.5.10
在线时间
24 小时

发表于 2022.9.24 09:31:10 | 显示全部楼层

加油第二十二天
新的一天加油!
回复 支持 反对

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2019.4.24
在线时间
17 小时

发表于 2022.9.24 09:34:04 | 显示全部楼层
拼搏
新的一天加油!
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2019.4.24
在线时间
17 小时

发表于 2022.9.26 09:40:55 | 显示全部楼层
拼搏
新的一天加油!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表