我想为每个数据点绘制一个带有条形图形状的彩色行为图。我使用day或day_str来计算天数,并使用t_in_day来查找一天内的小时数。我使用facet_grid让不同日期的数据显示在不同的面板中。但是当我运行我的程序时,数据没有以正确的顺序显示。具有相同day_str的数据不会显示在同一行中,而是其中一些在后面出现了很多天。怎么解决?非常感谢你。
library(ggplot2)
library(data.table)
set.seed(123)
n= 15*24 + 3
dt <- data.table(t=0:(n-1))
dt[, y := abs(sin(2*pi*t/25.4)) + rnorm(n,1,0.2)]
dt[,t_in_day := t%%24]
dt[,day := (floor(t/24)+1)]
dt2 <- copy(dt)
dt2[,day := day-1]
dt2[,t_in_day := t_in_day + 24]
dt <- dt[day<max(day)]
dd <- rbind(dt, dt2)
dd <- dd[day>0]
dd[, day_str := sprintf("day\n%03d",day)]
col1<-c()
break1=10
rbPal <- colorRampPalette(c('red','yellow'))
col1 <- rbPal(break1)[as.numeric(cut(dd[,y],breaks = break1))]
cuts<-levels(cut(dd[,y],breaks = break1))
cuts<-gsub(","," - ",cuts)
cuts<-gsub("\\(","[",cuts)
ggplot(dd,aes(x=t_in_day,y=dd[,y])) +
geom_bar(stat="identity",aes(fill=col1)) +
facet_grid(day_str ~ .) + scale_x_continuous(name="time (h)",breaks = waiver())+
scale_y_continuous(name="y")+#scale_colour_gradient(low="red", high="yellow")+
scale_fill_manual(values=rbPal(break1),labels=cuts)