簡體   English   中英

月 - 年條形圖以切面和填寫年份; 以char格式輸入數據作為日期

[英]Month-Year bar graph plot faceted and filled on year; with data input as date in char format

環境:贏得7 HP,R v2.15.1

我希望得到的:

  • 繪制y(數字)vs x(日期)
  • 標簽月 - 月縮寫,排序mon + year,las2垂直對齊
  • 顏色填充年份
  • 按年分面

我在這個論壇中閱讀了不同的主題后嘗試了不同的方法,但無法得到我需要的東西。 需要幫忙。 附加樣本數據和結果。

我的樣本數據

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 Base Plot

1)繪制x對y

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

給我基礎情節結果

2)繪圖x vs y + fill =年

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

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

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

3)繪圖x vs y + fill =年+ facet_grid(年)

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

獲取:layout_base中的錯誤(data,cols,drop = drop):至少一個圖層必須包含用於構面的所有變量

4)Plot x vs y + fill = year + facet_grid(year)+ labels-month(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))

獲取:scale_labels.continuous(scale,major)中的錯誤:中斷和標簽的長度不同

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

  1. 僅限3年 - 2010,2011,2012
  2. xlabels - %b%y格式; 按月 - 順序排序; las2定位(垂直)
  3. facet_grid按年份只有那一年的xlabels和bar在相應的facet-grid中

回答你的3點:

  1. 使用scale_fill_gradient(breaks = unique(MySample $ year))
  2. 使用標准的內置日期系統而不是lubridate。 您可以使用date_format在ggplot2中指定格式。
  3. 使用:+ facet_grid(。〜年,scale =“免費”)

以下代碼將執行此操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM