查看: 355|回复: 5

[R语言] 去画不被定义的图!去画自由组合的海盗图!

[复制链接]

管理员

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

主题
909
注册时间
2020.6.16
在线时间
485 小时

发表于 2022.11.24 10:00:29 | 显示全部楼层 |阅读模式
今天来画一个有趣的海盗图!其实海盗图就是柱形图+散点图+小提琴图+95%置信区间+均值线的大组合,优点在于可以通过一图同时展示更多维度信息,且不同图层之间可以任意组合,你想展示什么、想关闭什么都可以。

下面就开始今日学习!

  1. #R包的下载与载入:
  2. devtools::install_github("mikabr/ggpirate")
  3. library(ggpirate) #海盗图包
  4. library(cols4all) #配色包
  5. #使用内置鸢尾数据集完成测试:
  6. dt <- iris
  7. head(dt)
复制代码


  1. #基本海盗图绘制:
  2. p <- ggplot(dt, aes(x = Species, y = Sepal.Width)) +
  3. geom_pirate(aes(color = Species, fill = Species)) +
  4. theme_classic()
  5. p
复制代码


在上图中,同时展示了五类图表:
1. 散点图;
2. 柱形图;
3. 水平均值线;
4. 假设正态抽样分布的95%置信区间框;
5. 密度小提琴图

  1. #颜色修改:
  2. c4a_gui()
  3. mycol1 <- c4a('set2',3)
  4. mycol2 <- c4a('light',3)
  5. mycol1
  6. mycol2
复制代码


  1. p1 <- ggplot(dt, aes(x = Species, y = Sepal.Width)) +
  2. geom_pirate(aes(color = Species, fill = Species)) +
  3. scale_fill_manual(values=rev(mycol1)) +
  4. scale_color_manual(values=rev(mycol1)) +
  5. theme_classic()
  6. p1
复制代码


  1. #其它各个图形元素细节调整:
  2. p2 <- ggplot(dt, aes(x = Species, y = Sepal.Width)) +
  3. geom_pirate(aes(color = Species, fill = Species),
  4. points_params = list(shape = 1, size = 1.8), #散点的类型及大小
  5. bars_params = list(alpha = 0.5, width = 0.6), #柱子的不透明度和宽度
  6. lines_params = list(size = 0.7, width = 0.6), #水平均值线的宽度和长度
  7. cis_params = list(fill = "white", size = 0.5, alpha = 0.5, width = 0.6), #置信区间框填充色、长度和不透明度
  8. violins_params = list(fill = "white", size = 0.5, alpha = 0, width = 0.5), #小提琴图填充色、描边粗细、不透明度、宽度
  9. jitter_width = 0.66) + #抖动
  10. scale_fill_manual(values=rev(mycol2)) +
  11. scale_color_manual(values=rev(mycol2)) +
  12. theme_classic()
  13. p2
复制代码


绘图时默认是五类图表同时展示,但我们可以自由选择要显示或关闭任意图形层:

  1. #仅显示置信区间款和均值线:
  2. p3 <- ggplot(dt, aes(x = Species, y = Sepal.Width)) +
  3. geom_pirate(aes(color = Species, fill = Species),
  4. points = FALSE, bars = FALSE, violins = FALSE, #把散点、柱形图、小提琴图层关掉
  5. lines_params = list(size = 0.8, width = 0.9),
  6. cis_params = list(size = 0.6, width = 0.7)) +
  7. scale_color_manual(values=rev(mycol2)) +
  8. theme_classic()
  9. p3
复制代码


  1. #仅显示柱形图和散点:
  2. p4 <- ggplot(dt, aes(x = Species, y = Sepal.Width)) +
  3. geom_pirate(aes(color = Species, fill = Species),
  4. lines = FALSE, cis = FALSE, violins = FALSE,
  5. points_params = list(color = 'black',alpha = 1, shape = 1, size = 1.8),
  6. bars_params = list(color = 'black', alpha = 0.6, width = 0.6),
  7. jitter_width = 0.66) +
  8. scale_fill_manual(values=rev(mycol2)) +
  9. theme_classic()
  10. p4
复制代码


  1. #去掉柱子显示其它:
  2. p5 <- ggplot(dt, aes(x = Species, y = Sepal.Width)) +
  3. geom_pirate(aes(color = Species, fill = Species),
  4. bars = FALSE,
  5. points_params = list(shape = 1, size = 1.8),
  6. lines_params = list(size = 0.7, width = 0.8),
  7. cis_params = list(fill = "white", size = 0.5, alpha = 0.5, width = 0.8),
  8. violins_params = list(fill = "white", size = 0.5, alpha = 0, width = 0.6),
  9. jitter_width = 0.45) +
  10. scale_color_manual(values=rev(mycol2)) +
  11. theme_classic()
  12. p5
复制代码


当然,组合方式还有很多,大家感兴趣可以自行画画看。好啦,我们今天的分享就到这里!

参考资料
https://github.com/mikabr/ggpirate

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


本文作者:基迪奥-喵酱

本帖子中包含更多资源

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

x
新的一天加油!
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

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

发表于 2022.11.25 12:40:10 | 显示全部楼层
11月的第十七天
新的一天加油!
回复 支持 反对

使用道具 举报

中华鲟

Rank: 5Rank: 5

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

发表于 2022.11.26 11:07:53 | 显示全部楼层
11月的第十八天
新的一天加油!
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2019.7.28
在线时间
6 小时

发表于 2022.11.27 09:26:26 | 显示全部楼层
11月的第二十六天
新的一天加油!
回复 支持 反对

使用道具 举报

中华鲟

Rank: 5Rank: 5

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

发表于 2022.11.27 10:15:57 | 显示全部楼层
11月第十九天
新的一天加油!
回复 支持 反对

使用道具 举报

中华鲟

Rank: 5Rank: 5

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

发表于 2022.11.28 09:12:01 | 显示全部楼层
11月的第二十天
新的一天加油!
回复 支持 反对

使用道具 举报

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

本版积分规则

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