0

我正在尝试使用 facet_grid 绘制八年(2004-2011)系列的月降水量数据,以在单个图中绘制每年的月度值。但是,很多时候,在绘图时会出现问题(可能是我的错)。您可以看到我从 2004 年开始到 2011 年结束的每个图的 x 轴图,但我需要从 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") + 
4

1 回答 1

5

您可以使用该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")

在此处输入图像描述

于 2013-09-25T10:48:00.440 回答