2012-07-13 20 views
5

環境:Win 7的HP,R v2.15.1年 - 月年條形圖情節分面並填充年份;與數據輸入的日期格式字符

我希望得到什麼:

  • 繪Y(數字)與X(日期)與
  • 標籤月 - 年縮寫,分類週一+一年,LAS2垂直對齊的一年充滿
  • 顏色
  • 小格按年

在閱讀本論壇中的不同主題後,我嘗試了不同的方法,但無法獲得我需要的內容。需要幫忙。附上樣本數據和結果。

MYSAMPLE數據

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是日期(字符)在MM-DD-YY格式TZ:IST(加爾各答/亞洲) 數據具有每月只有單一的y值是上的開始日期本月

轉換爲數據幀

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

負載所需的庫

require(lubridate) 
require(ggplot2) 

MYSAMPLE壘積

1)標繪X對y

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

給我基情節導致

2)標繪X對y +補=年

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

給我填充,但有5年填充2010,2010.5,2011,2011.5,2012

我嘗試了不同的方法,但遇到了一個錯誤或另一個錯誤。

3)標繪X對y +補=年+ facet_grid(年)

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

獲取:錯誤layout_base(數據,COLS,降=滴): 至少一層必須包含所有變量用於磨製

4)繪X對y +補=年+ facet_grid(年)+標籤月(簡稱)

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)) 

獲取:錯誤scale_labels.continuous(規模大):休息和標籤長度不同

我被卡住了,需要幫助才能繼續前進。 需要的解決方案,以滿足下列要求:

  1. 3填充年僅 - 2010,2011,2012
  2. xlabels - %B%Y格式;按月份順序排序; LAS2定位(垂直)
  3. facet_grid逐年只有當年的xlabels和酒吧,在適當的小格

回答

1

要回答你的3分:

  1. 使用scale_fill_gradient(符=唯一的(MYSAMPLE $ year))
  2. 使用標準的內置日期系統而不是lubridate。您可以使用date_format在ggplot2中指定格式。
  3. 使用:+ facet_grid(。〜年,鱗片= 「免費」)

下面的代碼將做到這一點:

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

由於一噸,夥計!作品!對我也有用的學習! – user1506686 2012-07-14 00:56:43