R和ggplot:将x轴标签放在ggplot中的面板之外 [英] R and ggplot: Putting x-axis labels outside the panel in ggplot
本文介绍了R和ggplot:将x轴标签放在ggplot中的面板之外的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有办法让ggplot中的标签面板向前推进?
其实我试图回答我的问题
解决方案
您必须关闭底部面板元素的剪辑:
p <-mydata%>%ggplot(aes(x = dist,y = Value,fill = factor(Year)))+ geom_bar(stat ='summary' ,position ='dodge',fun.y ='mean',width = 1)+
facet_wrap(〜PNo,ncol = 2)+
theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())+
geom_label(data = mydata%>%dplyr :: filter(%c('X-3','X-4')中的PNo%),aes (x = dist,y = 0,label = Tag),size = 6,inherit.aes = F,color ='red')
library(grid)
gt < - ggplot_gtable(ggplot_build p))
gt $ layout $ clip [grep(panel-2 -\\d +,gt $ layout $ name)]< - off
grid.draw(gt)
Is there a way to bring the labels forward with respect to plot panel in ggplot? Actually I was trying to answer my question here. I have not got any satisfactory response to that one although I thought it would be possible in ggplot. This is an attempt to get a solution although a hacky one. But the labels are rendered below the plot panel here.
Following are my (example) data, attempted solution and the resulting plot.
library(ggplot2)
library(magrittr)
mydata = data.frame(expand.grid(Tag = c('A','B','C'),Year = 2010:2011,PNo = paste0("X-",1:4)),Value = round(runif(24,1,20)))
mydata$dist = ifelse(mydata$Tag == 'A',0,ifelse(mydata$Tag=='B',2,7))
mydata %>% ggplot(aes(x = dist,y = Value,fill = factor(Year))) +geom_bar(stat='summary',position = 'dodge',fun.y='mean',width = 1) +
facet_wrap(~PNo,ncol=2) +
theme(axis.text.x = element_blank(),axis.ticks.x = element_blank()) +
geom_label(data = mydata %>% filter(PNo %in% c('X-3','X-4')),aes(x = dist,y=0,label = Tag),size=6,inherit.aes=F,color = 'red')
解决方案
You have to turn off clipping of the bottom panel elements:
p <- mydata %>% ggplot(aes(x = dist,y = Value,fill = factor(Year))) +geom_bar(stat='summary',position = 'dodge',fun.y='mean',width = 1) +
facet_wrap(~PNo,ncol=2) +
theme(axis.text.x = element_blank(),axis.ticks.x = element_blank()) +
geom_label(data = mydata %>% dplyr::filter(PNo %in% c('X-3','X-4')),aes(x = dist,y=0,label = Tag),size=6,inherit.aes=F,color = 'red')
library(grid)
gt <- ggplot_gtable(ggplot_build(p))
gt$layout$clip[grep("panel-2-\\d+", gt$layout$name)] <- "off"
grid.draw(gt)
See Point clipped on x-axis in ggplot
这篇关于R和ggplot:将x轴标签放在ggplot中的面板之外的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文