【问题标题】:Specification of first and last tick marks with scale_x_date使用 scale_x_date 指定第一个和最后一个刻度线
【发布时间】:2013-01-23 10:59:15
【问题描述】:

我希望能够指定出现在 ggplot2 生成的绘图中的第一个和最后一个刻度线,但是遇到了一些问题。这是一些代码。

#Produce a vector of days 
dateVec <- seq(from = as.Date("2011-11-21"), to = as.Date("2012-11-23"), by = "days")

#Some random values
myData <- rnorm(length(dateVec))

# Plot it
qplot(dateVec, myData) + 
    scale_x_date(breaks = "4 weeks", limits = c(min(dateVec), max=max(dateVec))) + 
    theme(axis.text.x = element_text(size = 10, angle = 45, colour = "black",
          vjust = 1, hjust = 1))

请注意,日期向量中的最小日期是 2011-11-21,最大日期是 2012-11-23,并且我已经指定了绘图的限制。然而,情节似乎扩大了一些。

有没有办法强制第一个和最后一个刻度线对应于scale_x_date中指定的实际限制?

谢谢!

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    为确保轴不展开,您可以将参数expand = c(0, 0) 添加到scale_x_date()

    qplot(dateVec, myData) + 
    scale_x_date(breaks = "4 weeks", limits = c(min(dateVec), max = max(dateVec)),
                 expand=c(0,0)) +  
    theme(axis.text.x  = element_text(size = 10, angle = 45, colour = "black",
          vjust = 1, hjust = 1))
    

    更新

    如果您需要以最小和最大日期开始的刻度,那么您可以定义自己的休息时间。为此,我制作了向量break.vec,其中包含最小和最大日期以及它们之间的月份日期。然后使用此向量在scale_x_date() 中设置中断。

    break.vec <- c(as.Date("2011-11-21"),
                   seq(from = as.Date("2011-12-01"), to = as.Date("2012-11-01"),
                     by = "month"),
                   as.Date("2012-11-23"))
    
    qplot(dateVec, myData) + 
      scale_x_date(breaks = break.vec) +  
      theme(axis.text.x = element_text(size = 10, angle = 45, colour = "black",
                                       vjust = 1, hjust = 1))
    

    【讨论】:

    • 谢谢。我也试过这个,但我仍然无法得到我想要的。我更关心显示为 max(dateVec) 的最后一个刻度线。您可以在示例中看到最后一个刻度线出现在 2012-11-19,但不是 dateVec 向量中的最后一个值。 ???
    • @jason.p.pickering 如果你设置了breaks="4 周",你不能得到最后一个刻度为2012-11-23,因为这个日期和第一个日期之间的差不是4 周次的东西。如果您想同时查看这两个日期,那么您将不得不自己休息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2016-02-29
    • 2013-04-03
    • 1970-01-01
    相关资源
    最近更新 更多