我有一个带有离散标签的数据框,每个标签都是"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
答案 0 :(得分:0)
也许这会对你有所帮助。您应该设置breaks
和labels
参数,一切都应该有效:
# 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)