条形图中条之间的不同空间 geom_bar

3

我尽力阅读了与我的问题相关的问题。最相关的是:问题。但是我无法解决我的问题。我有一个数据集,如下所示:

   structure(list(COMPANY = structure(1:5, .Label = c("Architecten", 
" 2.0", " Adema", "B.V.", 
" Alex"), class = "factor"), `YOUR COMPANY PERFORMANCE ORIENTATION` = c(5, 
7, 6, 4.5, 4.5), `AVERAGE PERFORMANCE ORIENTATION` = c(5.17, 
5.17, 5.17, 5.17, 5.17), `YOUR COMPANY LEARNING ORIENTATION` = c(5, 
5.6, 5.8, 6.2, 3.8), `AVERAGE LEARNING ORIENTATION` = c(5.67, 5.67, 5.67, 5.67, 5.67)), .Names = c("COMPANY", "YOUR COMPANY PERFORMANCE ORIENTATION", 
"AVERAGE PERFORMANCE ORIENTATION", "YOUR COMPANY LEARNING ORIENTATION", 
"AVERAGE LEARNING ORIENTATION"), class = "data.frame", row.names = c(NA, 
5L))

通过使用melt(来自reshape2库),我能够获得:
structure(list(COMPANY = structure(c(1L, 2L, 3L, 4L, 5L, 1L, 
+ 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L), class = "factor", .Label = c("Architecten", 
" 2.0", " Adema", "B.V.", 
" Alex")), variable = structure(c(1L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
4L, 4L), .Label = c("YOUR COMPANY PERFORMANCE ORIENTATION", "AVERAGE PERFORMANCE ORIENTATION", 
"YOUR COMPANY LEARNING ORIENTATION", "AVERAGE LEARNING ORIENTATION"
), class = "factor"), value = c(5, 7, 6, 4.5, 4.5, 5.17, 5.17, 
5.17, 5.17, 5.17, 5, 5.6, 5.8, 6.2, 3.8, 5.67, 5.67, 5.67, 5.67, 
5.67)), .Names = c("COMPANY", "variable", "value"), row.names = c(NA, 
-20L), class = "data.frame")

通过使用以下代码,我能够将平均值和公司变量并排绘制出来:
plot_try <-ggplot(mydataset,aes(COMPANY,value,fill=variable))+
geom_bar(stat="identity",position="dodge")+ theme(axis.ticks = element_blank(), axis.text.x = element_blank())+ facet_wrap(~COMPANY)

我想在前两个条形图(“您公司的绩效导向”和“平均绩效导向”)之间以及最后两个条形图之间添加间隔,但我无法做到。你有什么建议可以加入我的代码吗?谢谢。

恭喜您发布了第一个 R 问题,并附上了易于重现的示例和您尝试过的代码。加油! - Henrik
2个回答

3
使用已经融合的数据框mydataset,添加一个新变量,该变量包含每两个需要组合的柱形图的分组编号。然后使用这个新变量作为x值。
mydataset$group<-rep(c(1,2),each=10)
#as suggested by @Henrik more general solution
mydataset$group <- grepl("LEARNING", mydataset$variable)

ggplot(mydataset,aes(group,value,fill=variable))+
  geom_bar(stat="identity",position="dodge")+ 
  theme(axis.ticks = element_blank(), axis.text.x = element_blank())+ 
  facet_wrap(~COMPANY)

enter image description here


1
不错!+1!也许 mydataset$group <- grepl("LEARNING", mydataset$variable) 会使它稍微更通用一些? - Henrik
@Henrik 谢谢,那确实会更通用。 - Didzis Elferts
我非常感激。这两个答案对我来说都很有启发性。谢谢! - user2993492

1
这并没有直接回答你有关柱子间距的问题,但提供了另一种展示数据的思路。假设 df 包含你的原始数据(在执行 melt(...) 前)。
gg <- reshape(df,idvar="COMPANY",
              varying=list(c(2,4),c(3,5)), v.names=c("Individual","Average"),
              timevar="Metric", times=c("Performance","Learning"),
              direction="long")

ggplot(gg)+
  geom_point(aes(x=COMPANY,y=Individual))+
  geom_hline(aes(yintercept=Average))+
  geom_linerange(aes(x=COMPANY,ymin=Average,ymax=Individual,
                     color=factor(sign(Individual-Average))))+
  facet_grid(~Metric) +
  labs(x="",y="Scores") +
  theme(legend.position="none",
        axis.text.x=element_text(angle=90, vjust=0.4, hjust=1, size=15, face="bold"))

生成此图像:

谢谢。这真的很有趣。我需要稍微尝试一下,以便了解如何使其适合生成单个公司报告。非常感谢。 - user2993492

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接