【问题标题】:ggplot2: Missing x labels after expanding limits for x axis?ggplot2:扩展x轴限制后缺少x标签?
【发布时间】:2016-05-09 23:07:02
【问题描述】:

我想我的问题是微不足道的,但我无法弄清楚。我有一个年度数据,我想使用 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)

【问题讨论】:

    标签: r ggplot2 axis-labels


    【解决方案1】:

    首先需要清理您的 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

    【讨论】:

    • 你是 R 向导 @BWilliams !谢谢你 ! ;) 带有 'labels = c("", factor(2003:2010)' 的命题对我不起作用,但在 'breaks = c(2003:2010)' 中的修改非常适合不显示限制值。
    • 我遇到了与geom_rect 类似的问题,将图中的离散x 轴因子水平转换为as.numeric,以便我可以微调放置,但随后调用scale_x_discrete 使其显得离散再次。 x 轴值消失了,直到我将 scale_x_discrete 中的 limits 参数设置为原始轴标签的字符向量之前,我无法取回它们;设置 labels 无效。
    【解决方案2】:

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

    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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      相关资源
      最近更新 更多