很高兴听到你想通了。我仍然想知道每页的情节数量。我在代码中添加了几行,以允许您设置显示在一页上的绘图的行数和列数,然后根据需要循环遍历尽可能多的绘图页。我还添加了一些 ggplot 东西来改变绘图文本的外观。
# read data file into xx and change character years to Date values
xx <- read.csv("plot_test.txt",header=TRUE,sep=";")
xx$YEAR <- as.Date(paste(as.character(xx$YEAR),"-01-01",sep=""))
xx$NAME_YR <- paste(xx$NAME,xx$YEAR,sep="")
# create Year template for years between min and max years for each NAME
xxmin <- as.Date(tapply(xx$YEAR, xx$NAME, min ), origin="1970-01-01")
xxmax <- as.Date(tapply(xx$YEAR, xx$NAME, max ), origin="1970-01-01")
xxdates <- mapply(seq, xxmin, xxmax, by="12 month")
xxyears <- data.frame(NAME=rep(names(xxdates), sapply(xxdates, length)),
YEAR=as.Date(unlist (xxdates),origin="1970-01-01"))
xxyears$NAME_YR <- paste(xxyears$NAME,xxyears$YEAR,sep="")
# merge template and data and assign colnames to ploting data
xy <- merge(xx, xxyears, by="NAME_YR", all=TRUE)[,c("NAME.y","ID","YEAR.y","VALUE")]
names(xy) <- c("NAME","ID","YEAR","VALUE")
# plot each NAME in a separate chart with own time axis
library(ggplot2)
rows_pg <- 2 # number of rows of plots per page
cols_pg <- 2 # number of columns of plots per page
chts_pg <- rows_pg*cols_pg
num_plots <- nlevels(xy$NAME)
# set plot axis labels and main titles and set values for text
spttl <- ggtitle("Your plot title\nSecond line of your plot title")
spaxlb <- labs ( x="Year", y="Data Values")
spth <- theme(plot.title=element_text(size=16, face="bold", colour="blue") )
spth <- spth + theme(axis.title.x= element_text(size=14, colour="blue") )
spth <- spth + theme(axis.title.y = element_text(size=14, colour="blue") )
spth <- spth + theme(axis.text = element_text(size=14, colour="black") )
spth <- spth + theme(strip.text = element_text(size=14, colour="brown"))
# generate plots
for( iplt in seq(1,num_plots, chts_pg) ) {
sp <- ggplot(data=xy[xy$NAME %in% levels(xy$NAME)[iplt:(iplt+chts_pg-1)], ],
aes(x=YEAR, y=VALUE)) + geom_line() + geom_point()
sp <- sp + facet_wrap(~ NAME, scales="free_x", nrow=rows_pg, ncol=cols_pg)
plot(sp + spttl + spaxlb + spth)
}