ggplot2:扩展x轴限制后缺少x标签?

时间:2016-05-09 23:07:03

标签: r ggplot2 axis-labels

我想我的问题很简单,但我无法弄清楚。我有一个年度数据,我想用ggplot2 barplot显示。由于第一年的条形太靠近y轴,我想扩展x轴的极限。但是,如果应用,我的X轴值会消失,即使是theme()规范也不会产生结果......我不明白为什么?可能的原因是我正在使用"年"作为因素?但对于条形表示,我需要使用离散比例......

谢谢!

# reproductible exemple

year<-c(2003:2010)
manag<-rep(c("A", "B"), 4)
np<-rep(c(0,1), each = 4)
val<- c(10,20,50,10,14,80,19,25)

df<-data.frame(cbind(year, 
                     manag, np, val))

require(ggplot2)

a<-ggplot(data = df, aes(x = as.factor(year), y = val)) + 
  ggtitle("MISSING X VALUES!!!") +
  geom_bar(stat = "identity") +
  scale_x_discrete(limits= c(2002:2015)) 
  # theme(axis.text.x=element_text(size = 8, colour = "black", angle = 90)

b<-ggplot(data = df, aes(x = as.factor(year), y = val)) +
  geom_bar(stat = "identity") +
  ggtitle("NOT EXPANDED X LIMITS")

grid.arrange(a, b, ncol = 2)

enter image description here

2 个答案:

答案 0 :(得分:3)

首先需要清理data.frame代码。 删除cbind - cbind将所有内容都变成了一个因子

  df<-data.frame(cbind(year, 
                  manag, np, val))

所以它看起来像

  df <- data.frame(year, manag, np, val))

然后x轴将是连续的,例如

ggplot(df, aes(year, val))+geom_bar(stat="identity")+ 
  scale_x_continuous(breaks = c(2002:2010), 
                     labels = factor(2002:2010), 
                     limits = c(2002,2011)) 

您可以将标签更改为

labels = c("", factor(2003:2010))

如果您不希望2002年在那里

答案 1 :(得分:0)

基于@BWilliams答案的整个代码,垂直调整x刻度和x标签,用于条形图,基于@BWilliams答案:

year<-c(2003:2010)
manag<-rep(c("A", "B"), 4)
np<-rep(c(0,1), each = 4)
val<- c(10,20,50,10,14,80,19,25)

df<-data.frame(year, manag, np, val)

ggplot(df, aes(year, val))+geom_bar(stat="identity")+ 
  facet_grid(np ~ manag) +

  scale_x_continuous(breaks = c(2003:2010), 
                     #labels = c("", factor(2003:2010)),
                     labels = factor(2003:2010),
                     limits = c(2002,2011)) +
  theme(axis.text.x=element_text(size = 8, colour = "black", angle = 90, hjust = 0, 
                                 vjust = 0.5)) # center the x tick with label name 

enter image description here