使用 scale_x_date 指定第一个和最后一个刻度线 [英] Specification of first and last tick marks with scale_x_date

查看:19
本文介绍了使用 scale_x_date 指定第一个和最后一个刻度线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I would like to be able to specify the first and last tick marks which appear in a plot produced by ggplot2, but an running into some problems. Here is some code.

#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 并且我已经指定了绘图的限制.然而,情节似乎延长了一些.

Notice that the minimum date in the date vector is 2011-11-21 and the maximum date is 2012-11-23 and that I have specified the limits of the plot. However, the plot seems extended by some amount.

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

Is there a way to force the first and last tick marks to correspond to the actual limits specified in scale_x_date?

谢谢!

推荐答案

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

To ensure that axis is not expanded you can add argument expand = c(0, 0) to 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() 中设置中断.

If you need ticks that start with minimal and maximal dates then you can define your own breaks. For this I made vector break.vec containing minimal and maximal date as well as dates by month between them. Then used this vector to set breaks in 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))

这篇关于使用 scale_x_date 指定第一个和最后一个刻度线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆