注意:我在与Mike讨论后更新了这篇文章,因为我的问题可能表明ggplot中存在错误.基本上,以前我能够使用ggplot在图例键之间创建一个没有空格的条形图(图2是其示例输出,与链接2一样).但是,现在,ggplot似乎会自动在图例键之间添加空格......
原帖
我想创建一个带有图例的条形图.我正在做的一个例子如下:
b <- c("A","A","A","B","B","B", "A","A","A","B","B","B", "A","A","A","B","B","B") c <- c(11,22,33,99,88,77, 44,55,66,61,62,63, 83,85, 87, 84,86, 88) dft <- data.frame(b,c) ggplot(dft, aes(b,c, fill=b))+ stat_summary(fun.y=mean, geom="bar", position="dodge", colour="black", size=.2)+ scale_fill_manual(values=c("grey", "white"))+ theme(legend.key = element_rect(colour = 'black', size=.01)) ggsave("T3.jpg")
我遇到的问题是ggplot似乎在两个图例键之间自动创建空间.
图1
有没有办法在图例键之间删除此空格.请参阅下面的图2,了解我想要做的事情.
图2
类似的问题已经被问到了链接1,其目的是在图例键之间创建更多空间,但不幸的是,没有一个答案帮助我解决了我的问题(即,删除了图例键之间的空间).
我还遇到了一个链接,其中条形图表明似乎可以删除图例键之间的空格:链接2.但是,在将脚本调整到我的示例时,出现了完全相同的问题(图例键之间的空格).
为什么这个链接上的条形图显示没有空格,而当我尝试复制时,这个空间是否添加在图例键之间?我或许还应该补充一点,我最近更新了ggplot.这可能与此有关吗?
dft2<-ddply(dft,.(b),plyr::summarize, meanc = mean(c)) ggplot(data=dft2, aes(x=b, y=meanc, fill=b)) + geom_bar(stat="identity",position=position_dodge(), colour="black", size=.3) + scale_fill_manual(values=c("grey", "white")) + theme(legend.key = element_rect(colour = 'black', size=.01)) ggsave("T2.jpg")
任何有关如何解决此问题的建议都将受到欢迎.顺便说一句,增加更多空间对我来说也是一个潜在的解决方案,但正如前一篇文章(链接1)所见,这在ggplot中可能并不容易实现.
开始编辑
为了完整起见,我粘贴在我原来的ggplot脚本中,用于生成图例键之间没有空格的图例(图2是使用此脚本创建的 - 图2中省略了条等,因为这个问题是只涉及传说):
对于summarySE函数,请参见链接3:
slc <- summarySE(sl, measurevar="EStroop.ART", groupvars=c("Etarget","Econgruency"), na.rm=T) ggplot(data=slc, aes(x=Etarget, y=EStroop.ART, fill=Econgruency))+ geom_bar()+ geom_bar(stat="identity", position=position_dodge(), colour="black", show_guide=FALSE, size=0.15)+ geom_errorbar(aes(ymin=EStroop.ART-ci, ymax=EStroop.ART+ci), width=0.2, # Width of the error bars position=position_dodge(.9), size=0.15)+ labs(x="Target", y="Adjusted Reaction Time (milliseconds)")+ #set other titles scale_fill_manual(values=c("grey", "white"))+ theme(axis.title.x = element_text(face="bold", vjust=0.1, size =6), axis.title.y = element_text(face="bold", vjust=1.0, size =6), axis.text.x = element_text(size = 5, colour="black"), axis.text.y = element_text(size = 5, colour="black"), legend.key = element_rect(colour = 'black', size=.2), # to change border of the legend box legend.text=element_text(size = 4), legend.title=element_blank(), panel.grid.major = element_line(size=.20), panel.grid.minor = element_line(size=.1), axis.ticks=element_line(size=.2), axis.line=element_line(colour="black", size=0.15), legend.key.size = unit(.3, "cm"))+ # size of legend box coord_cartesian(ylim=c(500,700)) # to "zoom" in on the graph ggsave("ES_cong.tiff", mm', dpi=1200)
结束编辑