2012-07-13 9 views
5

Medio Ambiente: Win 7 HP, R v2.15.1Gráfico de gráfico de barras de un mes con facetas y relleno en el año; con la entrada de datos como la fecha en formato carbón

Lo que deseo de llegar a:

  • la parcela Y (numérico) vs x (fecha) con
  • etiquetas de abreviaturas mes del año, mon ordenados + años, LAS2 verticalmente alineado
  • colores llenos por año
  • faceta de la red por año

He intentado diferentes enfoques después de leer diferentes hilos en este foro, pero no puedo obtener lo que necesito. Necesitas ayuda. Adjuntar datos de muestra y resultados.

MySample datos

x <- c("04-01-10","05-01-10","06-01-10","07-01-10","08-01-10","09-01-10","10-01-10","11-01-10","12-01-10","01-01-11","02-01-11","03-01-11","04-01-11","05-01-11","06-01-11","07-01-11","08-01-11","09-01-11","10-01-11","11-01-11","12-01-11","01-01-12","02-01-12","03-01-12","04-01-12","05-01-12","06-01-12") 
y <- c(120,210,130,160,190,210,80,70,110,120,140,160,130,200,110,180,210,200,90,60,100,100,120,170,100,180,120) 

x es la fecha (carácter) en formato mm-dd-aa tz: IST (Calcuta/Asia) de datos sólo tiene un solo valor de y por mes, que es en la fecha de inicio de el mes

Convertir a los datos del marco

MySample <- data.frame(x) ## convert to dataframe 
MySample$y <- y 

bibliotecas de carga requerida

require(lubridate) 
require(ggplot2) 

MySample Base Parcela

1) Plot x vs y

ggplot(MySample, aes(MySample$x, MySample$y)) + 
     geom_bar(y=MySample$y,stat="identity") 

Me dio trama de base resulta

2) Plot x vs y + llenar = año

ggplot(MySample, aes(MySample$x, MySample$y, fill=year(MySample$x))) + 
     geom_bar(y=MySample$y,stat="identity") 

me dio rellenos, pero tiene 5 años de relleno con 2010,2010.5,2011,2011.5,2012

He intentado diferentes enfoques pero me he encontrado con un error u otro.

3) Plot x vs y + llenar = año + facet_grid (años)

ggplot(MySample, aes(x, y, fill=year(x))) + 
     geom_bar(y=MySample$y,stat="identity") + 
     facet_grid(. ~ year(MySample$x)) 

Get: Error en layout_base (datos, cols, gota = gota): Al menos una capa debe contener todas las variables utilizados para facetear

4) Terreno x vs y + = llenar año + facet_grid (años) + etiquetas meses (en forma abreviada)

ggplot(MySample, aes(x, y, fill=year(x))) + 
     geom_bar(y=MySample$y,stat="identity") + 
     scale_x_date(labels=month(MySample$x,label=TRUE,abbr=TRUE)) 

Get: Error en scale_labels.continuous (escala mayor): saltos y las etiquetas tienen diferentes longitudes

Estoy parado y necesito ayuda para seguir. necesitan soluciones para abordar los siguientes requisitos: años

  1. 3 sólo llenar - 2010,2011,2012
  2. xCategorias -% b% y formato; ordenados en la secuencia de un mes a otro; LAS2 posicionado (vertical)
  3. facet_grid por año con xCategorias y bares sólo eso del año en la faceta de la red apropiada

Respuesta

1

para responder a sus 3 puntos:

  1. uso scale_fill_gradient (roturas = único (MySample $ year))
  2. utilice el sistema de fecha incorporado estándar en lugar de lubridate. puede especificar el formato en ggplot2 con date_format.
  3. uso: + facet_grid (. ~ Años, escala = "libre")

El siguiente código hará:

MySample$date <- as.Date(MySample$x, "%m-%d-%y") 
MySample$year <- year(MySample$date) 

ggplot(MySample, aes(date, y, fill = year)) + 
    geom_bar(y=y,stat="identity") + 
    facet_grid(. ~ year, scales = "free") + 
    scale_x_date(labels = date_format("%b/%y")) + 
    scale_fill_gradient(breaks=unique(MySample$year)) 
+0

Gracias por tonelada, compañero! ¡Trabajos! ¡Aprendizaje útil para mí también! – user1506686

Cuestiones relacionadas