Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2:三向交互叠加条形图的分组条形图_R_Ggplot2_Interaction_Geom Bar_Stacked Chart - Fatal编程技术网

R ggplot2:三向交互叠加条形图的分组条形图

R ggplot2:三向交互叠加条形图的分组条形图,r,ggplot2,interaction,geom-bar,stacked-chart,R,Ggplot2,Interaction,Geom Bar,Stacked Chart,我尝试在一个面板中绘制一个堆叠条形图+双向交互,包括4个实验的同一个图表。然而,我无法躲避依赖于其中一个自变量的条。下面是我的数据 首先,我通过下面的代码读取数据 a<-read.table(file.choose(), header=T, dec=",") 你说的“它不起作用”是什么意思?当我加上这一点时,我得到了一个正确避开障碍的情节 如果只是想修改间距,可以通过向沿x轴绘制的因子添加其他(空)标高来实现。请注意,每个附加标高中有不同数量的空间: ggplot(data=b

我尝试在一个面板中绘制一个堆叠条形图+双向交互,包括4个实验的同一个图表。然而,我无法躲避依赖于其中一个自变量的条。下面是我的数据

首先,我通过下面的代码读取数据

a<-read.table(file.choose(), header=T, dec=",")
你说的“它不起作用”是什么意思?当我加上这一点时,我得到了一个正确避开障碍的情节

如果只是想修改间距,可以通过向沿x轴绘制的因子添加其他(空)标高来实现。请注意,每个附加标高中有不同数量的空间:

ggplot(data=b
       , aes(x= factor(interaction(Gest, lag)
                       , levels = c(1.1,2.1," ",1.3,2.3,"  ",1.8,2.8))
             ,y=score, fill = variable)) +
  geom_bar(stat="identity", position = "dodge") +
  facet_wrap(~Exp., ncol=2) +
  scale_x_discrete(drop = FALSE)

如果使用
cowplot
软件包,则可以进一步执行几步。这里的优点是,如果单独绘制每个实验图,可以对
lag
变量进行刻面。然后,你可以把它们缝合在一起。在这里,我抑制了单个图例,并在底部添加了一个共享的公共图例

sepPlots <- lapply(unique(b$Exp.), function(thisExp){
  b %>%
    filter(Exp. == thisExp) %>%
    ggplot(aes(x = as.factor(Gest)
               , y = score
               , fill = variable)) +
    geom_bar(stat="identity", position = "dodge") +
    facet_wrap(~lag, nrow = 1
               , labeller = label_both
               , switch = "x") +
    xlab("Gest") +
    ggtitle(paste("Experiment:", thisExp))

})


expPlots <-
  plot_grid(plotlist = lapply(sepPlots, function(x){x + guides(fill = "none")}))

plot_grid(expPlots
          , get_legend(sepPlots[[1]] + theme(legend.direction   = "horizontal"))
          , nrow = 2
          , rel_heights = c(1, 0.1))
seplots%
过滤器(Exp.==此Exp)%>%
ggplot(aes(x=平均因子(最大值))
,y=分数
,fill=变量)+
几何图形栏(stat=“identity”,position=“dodge”)+
面_包裹(~lag,nrow=1
,labeller=label\u两者
,switch=“x”)+
xlab(“Gest”)+
ggtitle(粘贴(“实验:”,thisExp))
})
expPlots你说的“它不起作用”是什么意思?当我加上这一点时,我得到了一个正确避开障碍的情节

如果只是想修改间距,可以通过向沿x轴绘制的因子添加其他(空)标高来实现。请注意,每个附加标高中有不同数量的空间:

ggplot(data=b
       , aes(x= factor(interaction(Gest, lag)
                       , levels = c(1.1,2.1," ",1.3,2.3,"  ",1.8,2.8))
             ,y=score, fill = variable)) +
  geom_bar(stat="identity", position = "dodge") +
  facet_wrap(~Exp., ncol=2) +
  scale_x_discrete(drop = FALSE)

如果使用
cowplot
软件包,则可以进一步执行几步。这里的优点是,如果单独绘制每个实验图,可以对
lag
变量进行刻面。然后,你可以把它们缝合在一起。在这里,我抑制了单个图例,并在底部添加了一个共享的公共图例

sepPlots <- lapply(unique(b$Exp.), function(thisExp){
  b %>%
    filter(Exp. == thisExp) %>%
    ggplot(aes(x = as.factor(Gest)
               , y = score
               , fill = variable)) +
    geom_bar(stat="identity", position = "dodge") +
    facet_wrap(~lag, nrow = 1
               , labeller = label_both
               , switch = "x") +
    xlab("Gest") +
    ggtitle(paste("Experiment:", thisExp))

})


expPlots <-
  plot_grid(plotlist = lapply(sepPlots, function(x){x + guides(fill = "none")}))

plot_grid(expPlots
          , get_legend(sepPlots[[1]] + theme(legend.direction   = "horizontal"))
          , nrow = 2
          , rel_heights = c(1, 0.1))
seplots%
过滤器(Exp.==此Exp)%>%
ggplot(aes(x=平均因子(最大值))
,y=分数
,fill=变量)+
几何图形栏(stat=“identity”,position=“dodge”)+
面_包裹(~lag,nrow=1
,labeller=label\u两者
,switch=“x”)+
xlab(“Gest”)+
ggtitle(粘贴(“实验:”,thisExp))
})

非常感谢马克,我正试图增加这些额外的差距。我将使用您提供的其他信息。再次感谢:)一个问题,您是否使用任何其他软件包来实现您提供的最后一个函数,因为当我粘贴最后一个绘图的第一个代码(从seplot开始)时,我得到了一个错误,这是一个有趣的错误(X[[I]],…):找不到函数“%>%”。无论如何谢谢你:)对不起
%%
是管道字符,
filter
函数来自
dplyr
(它也将加载
%%
,尽管它最初来自
magrittr
)。通常我会更好地记住列出这些依赖项。非常感谢Mark,我正试图添加这些额外的空白。我将使用您提供的其他信息。再次感谢:)一个问题,您是否使用任何其他软件包来实现您提供的最后一个函数,因为当我粘贴最后一个绘图的第一个代码(从seplot开始)时,我得到了一个错误,这是一个有趣的错误(X[[I]],…):找不到函数“%>%”。无论如何谢谢你:)对不起
%%
是管道字符,
filter
函数来自
dplyr
(它也将加载
%%
,尽管它最初来自
magrittr
)。通常我更喜欢记住列出那些依赖项。