首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ezPlot重叠错误条和数据

ezPlot重叠错误条和数据
EN

Stack Overflow用户
提问于 2016-10-08 08:59:42
回答 1查看 261关注 0票数 0

我正在使用ezPlot从ez包在R绘制结果的混合内部和之间的-ss设计。来自两个组的数据点有重叠,因此我想同时抖动数据点和相关的错误栏。

代码语言:javascript
复制
data<-structure(list(Sub = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("WW", "XX", "YY", 
"ZZ"), class = "factor"), DepVar = c(0.67, 0.35, 0.09, 0.2, 0.19, 
0.13, 0.45, 0.23, 0.08, 0.32, 0.17, 0.18, 0.67, 0.36, 0.55, 0.4, 
0.37, 0.05, 0.26, 0.11, 0.08, 0.46, 0.29, 0.18, 0.16, 0, 0.38, 
0.22, 0.08, 0.1, 0.54, 0.17, 0.07, 0.38, 0.75, 0.87, 0.27, 0.57, 
0.31, 0.28, 0.07, 0.12, 0.75, 0.33, 0.23, 0.33, 0.26, 0.18), 
Group = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("A", "B"), class = "factor"), 
Con = structure(c(1L, 3L, 3L, 3L, 4L, 5L, 2L, 3L, 4L, 1L, 
2L, 3L, 1L, 3L, 3L, 3L, 4L, 5L, 2L, 3L, 4L, 1L, 2L, 3L, 1L, 
3L, 3L, 3L, 4L, 5L, 2L, 3L, 4L, 1L, 2L, 3L, 1L, 3L, 3L, 3L, 
4L, 5L, 2L, 3L, 4L, 1L, 2L, 3L), .Label = c("C", "D", "E", 
"F", "G"), class = "factor")), .Names = c("Sub", "DepVar", 
"Group", "Con"), class = "data.frame", row.names = c(NA, -48L))

ezPlot( data,
    dv = .(DepVar),
    wid = .(Sub),  # subject
    within = .(Con),  
    between=.(Group),
    split=.(Group),
    do_bars=TRUE,
    type = 2, 
    x = .(Con))

一个非典雅的技巧是如此设置比例颜色手册白色,使底层数据点消失,然后使用geom-point位置道奇(0.4)。

代码语言:javascript
复制
ezPlot( data,
    dv = .(DepVar),
    wid = .(Sub),  # subject
    within = .(Con),  
    between=.(Group),
    split=.(Group),
    do_bars=TRUE,
    type = 2, 
    x = .(Con))+ 
      scale_color_manual(values=c("white", "white"))+
      geom_point(aes(fill=Group), color="black", pch= 21, size= 3, position=position_dodge(0.4))+
      geom_line(aes(group = Group),  lty = 3, lwd = 1.3, color='black')

但是,我希望绘制错误栏,我不知道如何实现这一点,也不知道其他解决方法是否可行。我想坚持爱兹图。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-08 10:33:19

一种方法是使用set print_code = TRUE,生成要绘制的数据,以及ggplot代码:

代码语言:javascript
复制
library(ggplot2)
stats <- ezPlot( data,
    dv = .(DepVar),
    wid = .(Sub),  # subject
    within = .(Con),  
    between=.(Group),
    split=.(Group),
    do_bars=TRUE,
    type = 2, 
    x = .(Con),
    print_code = TRUE)

然后,手动修改代码以将position = position_dodge(0.4)添加到每个geom,然后运行ggplot代码。

做同样事情的一个更有效的方法是将代码作为字符向量进行capture.output,使用gsub添加position = position_dodge(0.4),然后对修改后的代码进行eval(parse(text = ...))

代码语言:javascript
复制
gg_code <- capture.output(stats <- ezPlot( data,
    dv = .(DepVar),
    wid = .(Sub),  # subject
    within = .(Con),  
    between=.(Group),
    split=.(Group),
    do_bars=TRUE,
    type = 2, 
    x = .(Con),
    print_code = TRUE))
gg_code <- gsub("alpha", "position = position_dodge(0.4), alpha", gg_code)
eval(parse(text = paste(gg_code, collapse = "")))

输出:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39930560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档