2012-07-13 9 views
5

Ambiente: Win 7 HP, R v2.15.1Grafico grafico a barre mese-anno sfaccettato e riempito su anno; con l'input dei dati, come la data in formato char

Ciò che desidero raggiungere:

  • y Plot (numerico) vs x (data) con
  • etichette mese-anno abbrev, mon ordinato + anno, las2 allineati verticalmente
  • colori pieni per anno
  • sfaccettatura-grid per anno

Ho provato diversi approcci dopo aver letto diversi thread in questo forum, ma non sono riuscito a ottenere ciò di cui ho bisogno. Ho bisogno di aiuto. Allegare dati e risultati di esempio.

MYSAMPLE dati

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 è data (caratteri) in formato gg-mm-aa tz: IST (Calcutta/Asia) i dati ha solo singolo valore y al mese che si trova sulla data di inizio il mese

convertire in Data frame

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

necessario caricare le librerie

require(lubridate) 
require(ggplot2) 

MYSAMPLE Base Trama

1) Trama x vs y

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

Mi ha dato trama di base si traduce

2) Plot x vs y + riempire = anno

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

mi ha dato i riempimenti ma ho 5 anni di riempimento con 2010,2010,5,2011,2011,5,2012

Ho provato diversi approcci ma ho incontrato un errore o un altro.

3) Trama x vs y + riempire = anno + facet_grid (anno)

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

Get: Errore in layout_base (dati, cols, goccia = goccia): almeno uno strato deve contenere tutte le variabili utilizzati per la sfaccettatura

4) Plot x vs y + riempire = anno + facet_grid (anno) + etichette mesi (abbr)

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: Errore in scale_labels.continuous (scala, maggiore): Breaks e le etichette sono lunghezze diverse

Sono bloccato e ho bisogno di aiuto per andare avanti. bisogno di soluzioni per affrontare i seguenti requisiti: anni

  1. 3 riempire solo - 2010,2011,2012
  2. xlabels -% b formato% y; ordinati per sequenza di un mese; las2 posizionato (verticale)
  3. facet_grid per anno con xlabels e bar solo anno nella appropriata sfaccettatura-grid

risposta

1

di rispondere alle vostre 3 punti:

  1. uso scale_fill_gradient (pause = unica (MYSAMPLE $ anno))
  2. utilizzare il sistema di data incorporato standard invece di lubridate. puoi specificare il formato in ggplot2 con date_format.
  3. uso: + facet_grid (. ~ Anno, scale = "libero")

Il codice seguente lo farà:

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

Grazie una tonnellata, amico! Lavori! apprendimento utile anche per me! – user1506686

Problemi correlati