★ R で複数の系列を 1枚のグラフにプロットする ★

 435 R で複数の系列を 1枚のグラフにプロットする  yy  2003/02/26 (水) 18:07
  437 Re: R で複数の系列を 1枚のグラフにプロットする  青木繁伸  2003/02/26 (水) 22:33
   439 Re^2: R で複数の系列を 1枚のグラフにプロットする  yy  2003/02/27 (木) 09:31
    441 Re^3: R で複数の系列を 1枚のグラフにプロットする  青木繁伸  2003/02/27 (木) 09:43
     442 Re^4: R で複数の系列を 1枚のグラフにプロットする  sb812109  2003/02/27 (木) 10:42
      444 Re^5: R で複数の系列を 1枚のグラフにプロットする  yy  2003/02/27 (木) 16:30
  436 Re: R で複数の系列を 1枚のグラフにプロットする  sb812109  2003/02/26 (水) 20:15


435. R で複数の系列を 1枚のグラフにプロットする  yy  2003/02/26 (水) 18:07
はじめて投稿させていただきます.

ファイル file.csv に下記のようなデータが格納されていて,
trial,user1,user2
001,0.1,0.12
002,0.2,0.06
003,0.4,0.08
...
このデータを R の
data1 <- read.table("file.csv", sep=",", header=TRUE)
コマンドで読み込んだとき,
1枚のグラフ上に, trial 列を x軸にとり, user1, user2 列を
2本の折れ線としてプロットするにはどのようなコマンドで
実現できますでしょうか?

「R ノート」に記述のある tsplot という関数で実現できるのではと
思ったのですが, 当方の R (1.6.0) 環境では
`Error: couldn't find function "tsplot"' となってしまいます.

ご教示のほどよろしくお願いします.

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


437. Re: R で複数の系列を 1枚のグラフにプロットする  青木繁伸  2003/02/26 (水) 22:33
ま,いろいろなやり方があるでしょうが,以下も一つの例。

data1 <- read.table("file.csv", sep=",", header=TRUE)
attach(data1)
# x,y 軸の最小点と最大点で,軸の範囲だけを決める
# min, max とかうるさいけど,決めうちしていいなら plot(c(0, 10), c(0,100), ...) みたいにすればよい。
plot(c(min(trial), max(trial)), c(min(user1, user2), max(user1, user2)), type="n", xlab="trial", ylab="user")
# 折れ線を描く(何本でもお気に召すままに)
lines(trial, user1, col="red")
lines(trial, user2, col="blue")

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


439. Re^2: R で複数の系列を 1枚のグラフにプロットする  yy  2003/02/27 (木) 09:31
ありがとうございます.
sb812109様, 青木様のそれぞれの方法でグラフ描画する
ことができました.

ところで R は, アルファベット 1文字の名前なので,
Google 等の検索エンジンで情報を絞り込むキーワードとして
使いにくくて困っています (S にも言えることなのですが).

とりあえず, R に特徴的で良く使われるキーワード
(たとえば, read.table) を AND して検索するように
していますが, R に関するキーワード検索で何か良い
コツはありますでしょうか?

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


441. Re^3: R で複数の系列を 1枚のグラフにプロットする  青木繁伸  2003/02/27 (木) 09:43
> R に関するキーワード検索で何か良い
> コツはありますでしょうか?

R ならば,google で以下のようにするのも一法かと思います

site: r-project.org tsplot

サイト内を捜すので,余計なものが引っかかる可能性は低くはなるでしょう。
ただし,当然ながら,サイト外の有用なページは検索できません(泣)。

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


442. Re^4: R で複数の系列を 1枚のグラフにプロットする  sb812109  2003/02/27 (木) 10:42
>「R ノート」に記述のある tsplot という関数で実現できるのではと
> 思ったのですが, 当方の R (1.6.0) 環境では
> Error: couldn't find function "tsplot"' となってしまいます.

(1)関数名が間違っています。
    tsplotではなく,plot.tsです。
    コマンドラインから,?plot.tsで説明が出て来ます。

(2)Rには,時系列データ解析用のpackage: ts があります。
tsをインストールするには,
    2-1)Rのメニュー画面より,packagesを選択  
    2-2)Install package from CRANを選択
    2-3)tsを選択
    後は,指示通り,,,。

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


444. Re^5: R で複数の系列を 1枚のグラフにプロットする  yy  2003/02/27 (木) 16:30
> (1)関数名が間違っています。
>     tsplotではなく,plot.tsです。
ありがとうございます. この件で検索してみたところ,
かつて (1997年頃) tframe パッケージに tsplot という
名前の関数があったけれども, S-Plus の同名の関数と
機能が違っていて紛らわしいため, tfplot という名前に
変更したとの情報を見つけました.
cf. http://maths.newcastle.edu.au/~rking/R/help/02b/3650.html

私が参照した「R ノート」の `tsplot' は, この関数の
ことなのか (だとしたら, 情報がちょっと古くなっていますね),
あるいは単なる typo なのかは分かりません.

> (2)Rには,時系列データ解析用のpackage: ts があります。
> ...
インストール方法等を教えてくださりありがとうございます.
ぜひ ts パッケージをインストールして使ってみたいと思います.

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


436. Re: R で複数の系列を 1枚のグラフにプロットする  sb812109  2003/02/26 (水) 20:15
例えば,
   n.data <- 50
   y1 <- rnorm(n.data,  10,  2)
   y2 <- rnorm(n.data,  30,  2)
   y3 <- rnorm(n.data, 1000, 50)

   ylimit <- range(y1, y2)
   par(mfrow=c(1,1))
   plot(y1, type="n", ylim=ylimit, xaxt="n", las=1, ylab="", xlab="")
   points(y1, type="l")
   points(y2, type="l")
   axis(side=1, at=1:n.data, labels=time, las=2)
   par(new=TRUE)
   plot(y3, type="o", col="red", axes=F, ylim=c(500, 2000), xlab="", ylab="")
   axis(side=4, col.axis="red", labels=c(500,1000,1500,2000), las=1)

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


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