4

rでグループ化されたバープロットを作成しようとしていますが、理解できないことがいくつかあります。これは私がこれまでに持っているものです:

ここに画像の説明を入力

をお願いします:

  1. data.frame (.csv ファイル、以下を参照) からマトリックスを作成する
  2. Ablines が表示されますが、バーの前には表示されません
  3. グループ化されたバーのラベル (11 月、12 月、1 月、... -> 以下のデータを参照)
  4. プロット レイアウトは次のようになります。(私は基本的にプロットの境界線が欲しい)

理想グラフ

次のコードを使用しました。

x<-matrix(nrow=3,ncol=7, data=c(200,227,196,210,279,319,220,126,111,230,196,123,240,106,94,250,154,233,260,226,218))
tiff("p_month_all.tiff", width=600, height=300)
par(mar=c(5,4,0.5,0.5))
a=c("November","December","January","February","March","April","May")
barplot(x, beside=TRUE, ylim=c(0,350),xlab="Month", axes=TRUE,axis.lty=1, ylab="Monthly Precipitation [mm]", col=c("darkblue","dodgerblue3","deepskyblue1"),panel.first= abline(h = c(50,100,150,200,250,300), col = "grey", lty = 2), xaxt="n", yaxt="n")
par(ps=12, cex =1, cex.main=2)
axis(2, c(0,350, c(50, 100, 150, 200, 250, 300)), las=1)
dev.off()

データ セット (.csv ファイル) は次のようになります。

Month      Hornberg   Strick   Huetten
November     120       278       234
December     279       156       145
January      328       300       299
February     267       259       234
March        190       201       187
April        150       199       177
May          147       156       160
4

2 に答える 2

5

問題が何であるかをより簡単に確認できるように、わかりやすくするためにコードを書き直しました。

xaxt = "n"とで軸を抑制していましたyaxt = "n"。それらの行を削除しました。への呼び出しを追加するとbox、プロットの周りにボックスが描画されます。gridプロットにグリッド線を描画する呼び出しを追加します。行と列の名前をデータ マトリックスに追加して、プロットが軸で何を使用するかを認識できるようにしました。プロット マージンを更新しました。また、月の名前をハードコードされたシーケンスではなくmonth.name使用するなど、いくつかの部分を整理しました。seq.int

x <- matrix(
  c(
    200, 227, 196, 
    210, 279, 319, 
    220, 126, 111,
    230, 196, 123,
    240, 106, 94,
    250, 154, 233,
    260, 226, 218
  ),
  nrow = 3,
  ncol = 7
)
colnames(x) <- month.name[c(11:12, 1:5)]
rownames(x) <- c("Hornberg", "Strick", "Huetten")


par(mar = c(5, 4, 1.5, 0.5), ps = 12, cex  = 1, cex.main = 2, las = 1)

barplot(
  x, 
  beside      = TRUE, 
  ylim        = c(0,350),
  xlab        = "Month", 
  axes        = TRUE,
  axis.lty    = 1, 
  ylab        = "Monthly Precipitation [mm]",
  col         = c("darkblue", "dodgerblue3", "deepskyblue1"),
  panel.first =  abline(
    h    =  seq.int(50, 300, 50), 
    col  =  "grey", 
    lty  =  2
  )
)
box()
grid()
于 2013-09-05T09:55:46.233 に答える