★ R で棒グラフに凡例をつける ★

8342. R で棒グラフに凡例をつける 波音 2005/11/14 (月) 22:45
├8344. Re: R で棒グラフに凡例をつける 青木繁伸 2005/11/15 (火) 00:09
│└8345. Re^2: R で棒グラフに凡例をつける 波音 2005/11/15 (火) 01:13
│ └8346. Re^3: R で棒グラフに凡例をつける 青木繁伸 2005/11/15 (火) 09:17
│  └8359. Re^4: R で棒グラフに凡例をつける 波音 2005/11/15 (火) 18:43
│   └8391. Re^5: R で棒グラフに凡例をつける マスオ 2005/11/19 (土) 03:38
└8343. Re: R で棒グラフに凡例をつける 青木繁伸 2005/11/14 (月) 23:31


8342. R で棒グラフに凡例をつける 波音  2005/11/14 (月) 22:45
d.names.c<-paste(c("モデルあり","モデルなし"))
barplot(x,names.arg=d.names.c,beside=TRUE,ylab="人数")
legend(2.5,30,paste(c("与える","与えない")),1:ncol(x))
abline(h=0)

棒グラフの凡例をつけるときに,棒の色が凡例にうまく反映されません(グラフの色はcol=""で何も指定しないと黒と薄い灰色になります)。上のようにすると,与える=黒,与えない=赤となってしまうのですが,どうすればよいでしょうか。

     [このページのトップへ]


8344. Re: R で棒グラフに凡例をつける 青木繁伸  2005/11/15 (火) 00:09
barplot の引数にある legend.text をなぜ使わなかったのか分かりませんが,
barplot(x,names.arg=d.names.c,beside=TRUE,ylab="人数",legend.text=paste(c("与える","与えない")),col=c("red","green"))
みたいなのが描きたいわけではないのですか?

     [このページのトップへ]


8345. Re^2: R で棒グラフに凡例をつける 波音  2005/11/15 (火) 01:13
不完全なプログラム例で本当にすみませんでした。再度,プログラム例を挙げてお聞きします。

x<-matrix(c(25,15,10,30),2,2,byrow=TRUE)
d.names.c<-paste(c("モデルあり","モデルなし"))
d.names.r<-paste(c("与える","与えない"))
barplot(x,beside=TRUE,names.arg=d.names.c,legend.text=d.names.r)

の ようにしたのですが,こうすると凡例の位置を動かす方法が分からなかったので,legend(2.5,30,paste(c("与える","与えない ")),1:ncol(x))を別に指定しました。そうしたところ,凡例の色が薄い灰色ではなく赤になってしまったというわけなのです。

     [このページのトップへ]


8346. Re^3: R で棒グラフに凡例をつける 青木繁伸  2005/11/15 (火) 09:17
legend の色を与えるパラメータ名は fill ですね。

x<-matrix(c(25,15,10,30),2,2,byrow=TRUE)
d.names.c<-paste(c("モデルあり","モデルなし"))
d.names.r<-paste(c("与える","与えない"))
color <- c("red", "blue")
barplot(x,beside=TRUE,names.arg=d.names.c,legend.text=d.names.r, col=color)
legend(2.5,30,paste(c("与える","与えない")),1:ncol(x),fill=color)

のようにしてやってください。例では,color で棒と凡例の色を定義しています。barplot では col=,legend では fill にその定義を使っています。
> barplot(x,beside=TRUE,names.arg=d.names.c,legend.text=d.names.r)
>
> のようにしたのですが,こうすると凡例の位置を動かす方法が分からなかったので,legend(2.5,30,paste(c("与える","与えない ")),1:ncol(x))を別に指定しました。そうしたところ,凡例の色が薄い灰色ではなく赤になってしまったというわけなのです。

     [このページのトップへ]


8359. Re^4: R で棒グラフに凡例をつける 波音  2005/11/15 (火) 18:43
なるほど,colorに色を入れてあげてから,legendでfill= を指定すればよかったのですね。
回答ありがとうございました。

     [このページのトップへ]


8391. Re^5: R で棒グラフに凡例をつける マスオ  2005/11/19 (土) 03:38
> legend(2.5,30,paste(c("与える","与えない")),1:ncol(x))を別に指定しました。そうしたところ,凡例の色が薄い灰色ではなく赤になってしまったというわけなのです。

fillやcolに数値を渡した場合は,現在のパレットのその番号の色が使われるようです.
今は,1:ncol(x)==1:2を渡したので,

palette()
[1] "black" "red" "green3" "blue" "cyan" "magenta" "yellow" "gray"

の黒と赤になります.

barplot()のデフォルトのグレースケールは,grey.colors(要素数)を使っているようなので,legend()を呼ぶ前に,

palette(grey.colors(nrow(x)))

とすると,バーと同じグレースケールで描かれます.
(サブバーの要素数は ncol(x)ではなくて nrow(x)ですね)

x<-matrix(rep(-1:0,each=10),10)
barplot(x)
palette(grey.colors(nrow(x)))
legend(1.4,0,1:nrow(x),1:nrow(x))
palette("default")
legend(2.0,0,1:nrow(x),1:nrow(x))

     [このページのトップへ]


8343. Re: R で棒グラフに凡例をつける 青木繁伸  2005/11/14 (月) 23:31
プログラム例を挙げるときは,それだけでちゃんと実行可能なものにしてください。
追試することができません。あるいは,あなたと異なったことをやってしまうおそれがあります。

     [このページのトップへ]


● 「統計学関連なんでもあり」の過去ログ--- 035 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る