ggplot2中的date_minor_breaks

wat*_*wer 1 r ggplot2

我是初学者ggplot2.我无法用于date_minor_breaks在x轴上显示季度"滴答".

这是我的代码:

x<-c(seq(1:12))
time<-c("2010Q1","2010Q2","2010Q3","2010Q4","2011Q1","2011Q2", "2011Q3","2011Q4","2012Q1","2012Q2","2012Q3","2012Q4")
z<-data.frame(type = x,time = time)
z$time = as.yearqtr(z$time)
z$time = as.Date(z$time)
ggplot(data = z, aes(x=time,y=type)) +
geom_point() + 
scale_x_date(date_labels = "%Y",date_minor_breaks = "3 months",name = "Year") +
theme_tufte() +
theme(legend.position = "none")
Run Code Online (Sandbox Code Playgroud)

在ggplot2https://github.com/hadley/ggplot2/issues/542使用scale_x_date在 SO 格式化日期上研究了这个主题,发现在这个主题上报告了一些问题.但是,我并没有完全遵循关于更改的对话,ggplot2因为自从我开始使用ggplot2以来只有6天.

这是我得到的图表(它没有任何刻度)......

在此输入图像描述

这是一个从Excel生成的"刻度线"示例图.请忽略值,因为我创建这个Excel图表的目的是为了展示我正在寻找的东西 - 即"季度滴答".我很感激你的帮助.

在此输入图像描述

aos*_*ith 5

您可能必须每三个月进行一次重大休息,然后用空白填充标签,以产生主要(标记)和次要(未标记)标记的错觉.请参阅此答案以获取另一个示例

首先在每个季度手动打勾刻度线.

breaks_qtr = seq(from = min(z$time), to = max(z$time), by = "3 months")
Run Code Online (Sandbox Code Playgroud)

然后制作年份标签,并在每个数字后用三个空格填充这些标签.

labels_year = format(seq(from = min(z$time), to = max(z$time), by = "1 year"), "%Y")
labs = c(sapply(labels_year, function(x) {
    c(x, rep("", 3))
    }))
Run Code Online (Sandbox Code Playgroud)

现在使用break和带有labelsbreaks参数的标签scale_x_date.请注意,我没有使用date_labelsdate_breaks为此.

ggplot(data = z, aes(x=time,y=type)) +
    geom_point() + 
    scale_x_date(labels = labs, breaks = breaks_qtr, name = "Year") +
    theme_tufte() +
    theme(legend.position = "none")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述