前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ggplot2中的position参数解析

ggplot2中的position参数解析

作者头像
R语言数据分析指南
发布2023-09-24 14:39:37
发布2023-09-24 14:39:37
69400
代码可运行
举报
运行总次数:0
代码可运行

❝本节来回答一个老爷的问题,介绍常见绘图案例中几个基本参数的设置问题,主要用在柱状图与箱线图中。下面小编通过两个案例来进行展示,图形仅供展示用过程仅参考,希望各位观众老爷能够喜欢。代码直接复制粘贴即可运行 ❞

关注下方公众号下回更新不迷路

加载R包

代码语言:javascript
代码运行次数:0
运行
复制
library(tidyverse)
library(patchwork)

导入数据

代码语言:javascript
代码运行次数:0
运行
复制
df <- iris %>% pivot_longer(-Species) %>% 
  group_by(Species) %>% 
  slice_head(n=2) %>% 
  ungroup() %>% 
  slice(-4,-6)

案例展示

代码语言:javascript
代码运行次数:0
运行
复制
p1 <- ggplot(df) +
  geom_col(aes(x =Species,y=value,fill=name),
           position =  "dodge")+
  labs(x=NULL,y=NULL)+
  theme(legend.position ="non")

p2 <- ggplot(mtcars, aes(factor(cyl), fill = factor(vs))) +
  geom_bar(position = position_dodge(preserve = "single"))+
  labs(x=NULL,y=NULL)+
  theme(legend.position ="non")

p3 <- ggplot(df) +
  geom_col(aes(x =Species,y=value,fill=name),
           position = position_dodge2(preserve = "single"))+
  labs(x=NULL,y=NULL)+
  theme(legend.position ="non")

p1+p2+p3

❝在上方代码中可以看到position_dodge(), position = "dodge"position_dodge2()这三个参数,该系统参数都用于调整图层元素(如柱子或点)的位置,以避免重叠。但它们之间有一些细微的差别: ❞

1. position = "dodge"

这是position_dodge()的简写形式,它会自动计算需要的dodge宽度。不能设置preserve参数。

2. position_dodge()

相对于position="dodge"更为灵活,允许通过width参数来设置dodge的宽度。 默认情况下,preserve="total",意味着所有的柱子会被等宽地分开。

3. position_dodge2()

这是position_dodge()的一个扩展,提供了更多的控制,preserve= "single":保持每个单独的柱子的宽度不变,而不是整个组。 preserve="total":保持整个组的宽度不变(这与position_dodge()相同)。

代码语言:javascript
代码运行次数:0
运行
复制
position_dodge2(width = 0.9, preserve = "single")
示例:

假设你有一个数据集,其中有两个因素变量AB,每个都有两个水平12

  • 使用position="dodge"position_dodge(),你会得到四个等宽的柱子(两个A=1和两个A=2),它们按B的水平分开。
  • 使用position_dodge2(preserve="single"),如果A=1A=2的柱子高度不同,那么A=1的两个柱子会比A=2的两个柱子更接近,因为它们的宽度被保留了。

箱线图添加均值

代码语言:javascript
代码运行次数:0
运行
复制
set.seed(1234)                                         
data <- data.frame(values = rnorm(100),
                   group = LETTERS[1:4])

ggplot(data, aes(x = group, y = values)) +                
  stat_boxplot(geom="errorbar",width=0.1)+  # 绘制箱线图的error bar
  geom_boxplot() +                         # 绘制箱线图
  stat_summary(fun = mean, geom = "point", col = "#00A08A") +  # 绘制均值点
  stat_summary(fun = mean, geom = "text", col = "#00A08A",    # 绘制均值标签
               vjust = 1.5, aes(label = paste("Mean", round(..y.., digits = 1))))+
  theme_bw()  # 使用黑白主题
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-19 23:26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关注下方公众号下回更新不迷路
  • 加载R包
  • 导入数据
  • 案例展示
    • 1. position = "dodge"
    • 2. position_dodge()
    • 3. position_dodge2()
    • 示例:
  • 箱线图添加均值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档