如何在轴上显示轴标签的规则间隔子集

时间:2015-12-11 09:13:36

标签: r ggplot2

我有一个带有离散标签的数据框,每个标签都是"hh:mm"形式的文本。我每小时有4个标签,即"09:00""09:15""09:30""09:45",从"00.00""23:45"。因此,96个可能的标签值。 我想每小时只显示一个标签,因此"09:00""10:00"等等,并省略"09:15""09:30""09:45",以便有一个更清晰的情节。我尝试过多种方式使用scale_x_discrete功能scale_x_discrete(breaks = lab$Time) 其中lab是一个仅包含我要打印的标签的向量,但我总是遇到"invalid argument"错误。

head(lab)
    Time
73 00:00
77 01:00
81 02:00
85 03:00
89 04:00
93 05:00

1 个答案:

答案 0 :(得分:0)

也许这会对你有所帮助。您应该设置breakslabels参数,一切都应该有效:

# simple data
 df<-data.frame(labs=c("00:00","00:15","00:30","00:45","01:00","01:15","01:30","01:45"),
           val=1:8,stringsAsFactors=FALSE)

library(ggplot2)
library(dplyr)

# select labels to show
df2<-df %>% 
group_by(labs) %>%
mutate(gr= length(grep(":00",labs))) %>%
filter(gr==1) %>%
select(labs) %>%
as.data.frame()

#     labs
#  1 00:00
#  2 01:00

ggplot(df,aes(x=labs,y=val))+geom_point()+
 scale_x_discrete(breaks=df2$labs,labels=df2$labs)

enter image description here