scale_x_discrete()改变y轴

时间:2016-10-27 20:51:36

标签: r ggplot2

我正在尝试设置绘图对象并稍后向其添加数据。我将设置两年的选举周期,并在关键事件发生时添加垂直线。但是我试图以6个月的间隔将垂直线放在图上,而是将线放在y轴上。

library(ggplot2)


dateline = seq(as.Date("2011/1/1"), by = "month", length.out = 24) 
values = rnorm(24)


events = data.frame(dateline, values)


ggplot(events, aes(x=dateline, y=values))  + 
   scale_x_discrete(breaks=c("2011-01-01","2011-07-01","2012-01-01","2012-07-01")) + 
   labs(x="2012 Election Cycle")

结果是: enter image description here

现在我认为这些线应该在x轴上并且上下运行,不是吗?更奇怪的是,使用scale_y_continuous()会导致我期望x的行为。

enter image description here

让我更加困惑的是,我正在非常仔细地阅读一个教程,其中scale_x_discrete()的行为与我期望的方式相同,即为x轴创建垂直线。我失去了理智吗?

http://sharpsightlabs.com/blog/2014/11/24/r-line-chart-and-datavis-process/

1 个答案:

答案 0 :(得分:1)

您应该使用连续比例。这对我有用:

ggplot(events, aes(x=dateline, y=values)) +     
  scale_x_date(date_breaks="6 months")     

更一般地说,简单地说:

ggplot(events, aes(x=dateline, y=values))

在您的情况下会有效,因为日期范围是ggplot自动选择6个月作为要显示的标签范围(这就是为什么y连续缩放示例适合您; y是不是&#39执行任何操作,删除scale_x_discrete位有助于解决问题。