web-dev-qa-db-ja.com

複数列のCSVファイルをプロットする方法は?

私はRに非常に慣れていないので、おそらくばかげた質問に失礼します。

最初の行がヘッダー、最初の列が連続した整数インデックス、その他の17列が関数の浮動小数点値である、複数列のCSV(プレーンのコンマ区切り、引用符なし)ファイルがあります。

タスクは、17の線すべてを同じチャートに(同じ軸で)プロットすることです。

非常にシンプルに聞こえますが、実際に行うのはそれほど明白ではありません。

13
Ivan

read.csvを使用して、data.frameとしてデータを入力できます。次に、プロットするための選択肢がたくさんあります。ほとんどの調査作業ではlatticeを好みます。

格子状の2つ。ここでは、グラフ化するランダムデータを作成しています。

library(lattice)
d <- data.frame(index=1:20, x=rnorm(20), y=rnorm(20))

> head(d, n=3)
  index         x          y
1     1 -1.065591  0.2422635
2     2 -1.563782 -1.4250984
3     3  1.156537  0.3659411

xyplot(x+y~index, data=d, type='l', auto.key=list(space='right'))

列の名前から式を生成できます。私は通常これをプロンプトから実行しませんが、そのような構成をコードで使用します:

f <- paste(paste(names(d[,-1,drop=FALSE]), collapse="+"),
           names(d[,1,drop=FALSE]),
           sep=" ~ ")

xyplot(as.formula(f), data=d, type='l', auto.key=list(space='right'))

ベンの答えのように、type='l'は行を指定します。ポイントのデフォルトはtype='p'です。シリーズにラベルを付けるために、ここにauto.keyパラメータを追加しました。

enter image description here

4

おそらく最もコンパクトな、ベースRのみのソリューションは

_mydata <- read.csv("mydatafile.csv")
matplot(mydata[, 1], mydata[, -1], type="l")
_
  • _header=TRUE_はread.csv()のデフォルトオプションであるため、ヘッダー行の存在を明示的に指定する必要はありません。
  • _mydata[, 1]_は最初の列を選択します。 _mydata[, -1]_選択すべてを除く最初の列
  • _type="l"_は行を選択します(デフォルトはポイントです)。線種、色などの変更の詳細については、_?matplot_、_?plot_などを参照してください...

matplotが役立つことがわかったら、StackOverflowで他の例を検索できます。 Rのcsvから複数の線を描く方法

24
Ben Bolker