我试图用facet_grid绘制为期八年(2004-2011)系列的月降水量数据,以绘制单个地块中每年的月度值。但是,很多时候,绘图时可能会出现问题(可能是我的错)。你可以看到我从x轴开始的情节从2004年开始,到2011年为每个情节结束,但我需要从每年的1月到12月的情节从1月到12月。我怎样才能摆脱这个错误?
任何帮助将不胜感激。
在这里你可以获得dput(pcp.mensual)http://ubuntuone.com/0EZvmwXGnSkqNVwXZOnx8E的输出,以下是我使用的代码(一段较长的脚本)。
library(ggplot2)
library(plyr)
library(lubridate)
library(scales)
#---------------------------------------------------------------------
system("awk '{ print $1 \";\" $2 \";\" $3 \";\" $5 \";\" $10 \";\" $11 \";\" $13 }' visbel.cor > kk.dat",intern=T)
# Lectura de datos
datos=read.csv("kk.dat",sep=";",header=T,na.strings="-99.900")
# Inclusión de una columna con formato temporal
# (dato original en formato %y/%m/%d %H:%M:%S)
datos=within(datos, datetime <- as.POSIXct(paste(FECHA,H_SOLAR),format = "%y/%m/%d %H:%M:%S"))
# Creación del objeto datetime
#datetime <- as.POSIXct(paste(datos$FECHA,datos$H_SOLAR),format = "%y/%m/%d %H:%M:%S")
# Eliminación de valores NA en Precipitación para barplot
datos$Precipitacion[is.na(datos$Precipitacion)]=0
#---------------------------------------------------------------------
pcp.diaria=aggregate(cbind(Precip.diaria=Precipitacion) ~ FECHA, datos, sum)
pcp.diaria=within(pcp.diaria, date <- as.POSIXct(paste(pcp.diaria$FECHA),format = "%y/%m/%d"))
# Agregación mensual
pcp.diaria$mes <- floor_date(pcp.diaria$date, "month")
pcp.mensual=ddply(pcp.diaria, "mes", summarise, x = sum(Precip.diaria,na.rm=TRUE))
pcp.mensual$ano=year(pcp.mensual$mes)
colnames(pcp.mensual) <- c("mes", "Precip.mensual","ano")
#---------------------------------------------------------------------
ggplot(data=pcp.mensual,aes(x=mes, y=Precip.mensual)) +
facet_grid(ano ~. ) +
geom_bar(colour="blue",stat="identity",fill="blue") +
答案 0 :(得分:4)
您可以使用months()
函数从POSIXct对象中提取月份信息。您可以将其设为x
而不是mes
。要按照您的意愿订购月份,而不是按字母顺序排列,您可以制作一个有序因子:
pcp.mensual$month <- months(pcp.mensual$mes)
pcp.mensual$month <- factor(pcp.mensual$month, levels = unique(pcp.mensual$month))
ggplot(data=pcp.mensual,aes(x=pcp.mensual$month, y=Precip.mensual)) +
facet_grid(ano ~. ) +
geom_bar(colour="blue",stat="identity",fill="blue")