【问题标题】:R: remove extra x-axis value (ggplot2)R:删除额外的 x 轴值(ggplot2)
【发布时间】:2014-08-14 11:08:36
【问题描述】:

我正在使用带有 ggplot2 库的条形图,当 x 轴上的值(在我的情况下为日期)数量很高时,额外的空白值刻度会出现在轴的开头和结尾。请问有没有办法去掉这些?可重现的代码和图片如下。

library(ggplot2)
a <- runif(28, 2.0, 7.5)
b <- seq(as.Date("1910/1/1"), as.Date("1910/1/28"), "days")
ds = data.frame(a, b)

p <- 
ggplot(data=ds, aes(b, a), environment = environment()) +  
theme(panel.grid.major.x =  element_blank(), panel.grid.minor =  element_blank(),
      panel.grid.major.y = element_line(color="grey"), 
      panel.background = element_blank(), panel.border = element_rect(fill= NA, colour = "grey")) +
geom_bar(width=.4,stat="identity") + 
xlab(" ") + ylab(" ") +
theme(text = element_text(size=20), axis.text.x = element_text(angle=90), axis.text = element_text(color="black"),
      legend.key = element_rect(fill="white")) +
scale_x_date(breaks = date_breaks("1 day"), labels = date_format("%d.%B %y")) 

print(p)

【问题讨论】:

  • 一个丑陋的解决方案是将limits = range(ds$b) + c(1, -1)添加到scale_x_date。
  • 这可能与scale_x_date 中的expand 参数有关。使expand 常数相对较小会在边缘留下更少的空间,因此这些额外的轴中断没有空间。你可能会玩一会儿; expand = c(.01, .01) 在这种情况下看起来不错。

标签: r ggplot2 axis


【解决方案1】:

当我输入breaks = b 而不是breaks = date_breaks("1 day") 时,它解决了问题。您现在还需要library(scales) 来运行您的示例。

【讨论】:

    猜你喜欢
    • 2022-08-13
    • 1970-01-01
    • 2012-07-27
    • 2020-05-21
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    相关资源
    最近更新 更多