我希望能够指定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
中指定的实际限制?
谢谢!
答案 0 :(得分:16)
为确保不展开轴,您可以将参数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))