5

環境: Win 7 HP、R v2.15.1

私が達成したいこと:

  • y (数値) 対 x (日付) をプロットします。
  • ラベルの月年略語、ソートされた月 + 年、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 (カルカッタ/アジア) データには、月の開始日にある月ごとに 1 つの 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")

塗りつぶしをくれましたが、2010、2010.5、2011、2011.5、2012で5つの塗りつぶし年があります

私はさまざまなアプローチを試みましたが、何らかのエラーが発生しました。

3) x と y をプロット + fill=year + facet_grid(year)

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

Get : layout_base(data, cols, drop = drop) のエラー: 少なくとも 1 つのレイヤーに、ファセットに使用されるすべての変数が含まれている必要があります

4) x と 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))

Get : scale_labels.continuous(scale, major) のエラー: ブレークとラベルの長さが異なります

私は立ち往生しており、前進するために助けが必要です。次の要件に対応するソリューションが必要です。

  1. 2010 年、2011 年、2012 年のみ 3 年を埋める
  2. xlabels - %b%y フォーマット; 年月順でソート。las2 配置 (垂直)
  3. 適切な facet-grid にその年の xlabels と bars のみを含む年ごとの facet_grid
4

1 に答える 1

1

あなたの3つのポイントに答えるには:

  1. scale_fill_gradient(breaks=unique(MySample$year)) を使用
  2. lubridate の代わりに標準の組み込み日付システムを使用します。date_format を使用して、ggplot2 で形式を指定できます。
  3. 使用: +facet_grid(. ~ year, scales = "free")

次のコードはそれを行います:

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))
于 2012-07-13T20:38:58.217 に答える