No.06658 数値によって色を塗り別ける方法  【波音】 2008/05/30(Fri) 18:58

> a <- 1:10
> b <- 1:10
> plot(a, b, type="b")
> color <- a[a>=5]
> points(5:10, color, col="red")

としたような図を描きたいのですが,本来はもっと適切な書き方があるのでしょうか。群別に色を別けて描く場合などは,例えばグループを表す変数をgroupとしたら,引数のcolの部分で

col=c("red", "blue")[group]

としてplot()という関数1つで描けるのですが,,,

散布図で1<x<3のデータポイントのみ赤にするということができたはずなのですが,全く思い出せずにいるのです。けっこういろんなキーワードで検索したのですが,,,

No.06659 Re: 数値によって色を塗り別ける方法  【takahashi】 2008/05/30(Fri) 19:16

plot(a,b,type="b",col=ifelse(a>=5,2,1))

No.06661 Re: 数値によって色を塗り別ける方法  【青木繁伸】 2008/05/30(Fri) 22:36

plot(a,b,type="b",col=(a>=5)+1)
plot(a,b,type="b",col=c("cyan", "orange")[(a>=5)+1])

  場合によりいずれかを選択。
  あれあれ。col は単に,プロット記号の色だけを決めるんじゃないんだね。
type="b" っていうのは,ちょっと「きたない」グラフかも
plot(a,b,col=c("cyan", "orange")[(a>=5)+1], pch=19)
lines(a, b)

みたいにするのがいいかな?

No.06662 Re: 数値によって色を塗り別ける方法  【波音】 2008/05/30(Fri) 23:10

takahashi先生に青木先生,早速の回答ありがとうございます。

なるほど, takahashi先生が提示してくださったようにifelse()でa>=5のときは2(赤)を,そうでなければ1(黒)を,というようにする。 あるいは,青木先生のようにすれば良かったのですね。a>=5をカッコに入れて+1してあげると,このようになるのは忘れていました(というか,初 めて知ったかもしれません)。

> type="b" っていうのは,ちょっと「きたない」グラフかも

たしかに,ちょっと見にくいというか,色が混在しているような感じでデータポイントが赤の部分がカッコよくないと思ってはいました(^_^;)

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