質問

私は、次のデータを含むfoo.csvという名前のカンマ区切りのファイルを持っています

scale, serial, spawn, for, worker
5, 0.000178, 0.000288, 0.000292, 0.000300
10, 0.156986, 0.297926, 0.064509, 0.066297
12, 2.658998, 6.059502, 0.912733, 0.923606
15, 188.023411, 719.463264, 164.111459, 161.687982

私は基本的に2つの質問があります:

1)どのようにして第二の列(y軸)対最初の列(x軸)をプロットしていますか?私は(このサイトを読んでから)これをしようとしています。

data <- read.table("foo.csv", header=T,sep=",")
attach(data)
scale <- data[1]
serial <- data[2]
plot(scale,serial)

しかし、私はこのエラーを取り戻すます:

Error in stripchart.default(x1, ...) : invalid plotting method

私が間違ってやっている任意のアイデア?同じ問題で他の誰かを明らかにする 迅速なGoogle検索しかし、該当の答え。 UPDATE:それは結局のところ、私は途中で2つの代入文をスキップする場合、それは正常に動作します。これは、なぜ任意のアイデア?

2番目の質問は、最初の後、かなり簡単に、次のとおりです。

2)どのように私は、y軸上の他のすべての列に対して、最初の列(x軸)をプロットしますか?私はに実行している最初の問題を中心に得れば、それは非常に簡単です推測、しかし、私はまだそれのまわりで私の頭を包むよRに少しだけ新しいです。

役に立ちましたか?

解決

あなたは2つの行を必要としません

scale <- data[1]
serial <- data[2]

規模とシリアルとして既にread.tableにおけるヘッダから設定されます。

またscale <- data[1]data.frameから要素を作成する

  data[1]
1     5
2    10
3    12
4    15

scaleからread.tableはベクトルであるのに対し、

5 10 12 15

plot(scale, serial)機能はベクトルではなく、data.frameを期待するので、あなただけの

行う必要があります
plot(scale, serial)

y軸上のデータの他の列をプロットするための一つのアプローチ:

plot(scale,serial, ylab="")
par(new=TRUE) 
plot(scale,spawn,axes=F, ylab="", type="b")
par(new=TRUE) 
plot(scale,for., axes=F, ylab="", type="b")
par(new=TRUE) 
plot(scale,worker,axes=F, ylab="", type="b")

....があり、これを行うためのより良い方法は、おそらくですが、それは私の現在のRの知識を超えています

他のヒント

あなたの例では、

plot(scale, serial) 
scaleserialは、両方のデータフレーム、例えばあるので、

は動作しません。

class(scale)
[1] "data.frame"
プロットが生成されたら、

あなたは残りの列をプロットするために、次のことを試してみて、points()を使用することができます。 Iは第3列の範囲を収容するylimplotパラメータを用い、注意してください。

data <- read.csv('foo.csv', header=T)
plot(data$scale, data$serial, ylim=c(0,750))
points(data$scale, data$spawn, col='red')
points(data$scale, data$for., col='green')
points(data$scale, data$worker, col='blue')

私はRの新しいんだけど、あなたは簡単に印刷やプレゼンテーションのためのいくつかの優雅さ:)と1つのプロット内の他のすべての列対スケールを、描画したい場合、あなたはggplot2教授ハドレーウィッカムのパッケージを使用すると再形成します。

インストールます:

install.packages(“ggplot2”,dep=T)
install.packages(“reshape”,dep=T)

あなたの例を描画ます:

library(ggplot2)
library(reshape)

#read data
data = read.table("foo.csv", header=T,sep=",")

#melt data “scale vs. all”
data2=melt(data,id=c("scale"))
data2

   scale variable      value
1      5   serial   0.000178
2     10   serial   0.156986
3     12   serial   2.658998
4     15   serial 188.023411
5      5    spawn   0.000288
6     10    spawn   0.297926
7     12    spawn   6.059502
8     15    spawn 719.463264
9      5     for.   0.000292
10    10     for.   0.064509
11    12     for.   0.912733
12    15     for. 164.111459
13     5   worker   0.000300
14    10   worker   0.066297
15    12   worker   0.923606
16    15   worker 161.687982

#draw all variables at once as line with different linetypes
qplot(scale,value,data=data2,geom="line",linetype=variable)

また、軸を調整し、すべての行などのための設定個々のオプションを異なる変数ドット(geom=”points”)のためのさまざまな色や形を選択し、ポイント(colours=variable or shape=variable)を使用することができます。

オンラインドキュメントのdocumentation">

私は、これまでRの専門家であることからですが、私はあなたがdata.frameが必要だと思う。

plot(data.frame(data[1],data[2]))

これは私のRのセットアップに少なくともプロット何かをする!

luapyadの回答ではアドバイスの後、私はこれを思い付きました。私は、ヘッダーの名前を変更し、「スケール」ます:

scaling, serial, spawn, for, worker
5, 0.000178, 0.000288, 0.000292, 0.000300
10, 0.156986, 0.297926, 0.064509, 0.066297
12, 2.658998, 6.059502, 0.912733, 0.923606
15, 188.023411, 719.463264, 164.111459, 161.687982

、その後ます:

foo <- read.table("foo.csv", header=T,sep=",")
attach(foo)
plot( scaling, serial );

これを試してください:

data <- read.csv('foo.csv')
plot(serial ~ scale, data)
dev.new()
plot(spawn ~ scale, data)
dev.new()
plot(for. ~ scale, data)
dev.new()
plot(worker ~ scale, data)

それをプロットする簡単な-Rの方法があります:

https://code.google.com/p/simple-r/

そのスクリプトを使用して、あなただけ入力する必要があります:

r -cdps, -k1:2 foo.csv

あなたがしたいプロットを取得します。対応するRスクリプトを見るために冗長モード(-v)でそれを入れてください。

data <- read.table(...)
plot(data$scale,data$serial)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top