質問
次のようなデータセットを使用しています。
1 48434 14566
1 56711 6289
1 58826 4174
2 56626 6374
2 58888 4112
2 59549 3451
2 60020 2980
2 60468 2532
3 56586 6414
3 58691 4309
3 59360 3640
3 59941 3059
.
.
.
10 56757 6243
10 58895 4105
10 59565 3435
10 60120 2880
10 60634 2366
上記のデータの最初の列の各値の各列のRのRのプロットが必要です。 X軸は反復数であり、Y軸は最大63000の値です。また、ドットを色の色の線と接続する必要があります。私はRに慣れていないので、ドキュメントを読んでいますが、それは私をもっと混乱させました。どんなボディPLZも役立ちますか。
編集:実際にV3値の折れ線グラフが必要です。 V3列の行数は、x軸上に、y軸のV3値になります。そして、V1で示されるグループにそれぞれ異なるグラフが必要です。 Chaseのソリューションは、軸をシフトしたいことを除いて機能します。V3値はy軸上にある必要があります。
edit2:@roman、これが私が実行しているコードです。
library(lattice)
d <- read.delim("c:\\proj58\\positions23.txt",sep="")
d <- do.call(rbind, lapply(split(d, d$V1), function(x) {
x$iterations <- order(x$V3, decreasing=TRUE)
x
}))
xyplot(V3 ~ iterations | V1, type="l", data=d)
これは私が得るエラーです、
>
> source("C:\\proj58\\plots2.R")
> d
V1 V2 V3 iterations
1.1 1 48434 14566 1
1.2 1 56711 6289 2
1.3 1 58826 4174 3
1.4 1 59528 3472 4
プロットがありませんか?何が足りないのかはい、わかった。何が悪いのかわからない。ここにあります、
さらに2つのこと、ボックス上のV1ラベルを1,2などの実際の数値に変更する方法...次に、100個のグループを含むファイルがあり、1ページですべてのグラフを作成しました(明らかに読み取れない)、CAN CAN私はこれらを複数のウィンドウで作りますか?
解決
さて、最初に、最初の変数の各サブセットについて、行番号を持つ変数を個別に作成する必要があります。データセットを最初の変数で分割し、行番号を持つ新しい変数を作成し、再結合することにより、それを行う1つの方法を次に示します。
また、おそらくV1を要因(カテゴリ変数)にしたいでしょう。
d <- do.call(rbind, lapply(split(d, d$V1), function(x) {
x$iterations <- 1:nrow(x)
x
}))
d$V1 <- factor(d$V1)
次に、 lattice
図書館、あなたはようなことをするでしょう
xyplot(V3 ~ iterations | V1, type="l", data=d)
複数のページにプロットを表示するには、ページ上のプロットの数を使用して制限します layout
オプション。それを行うには、マルチページ出力をサポートするファイルにプロットを保存する必要があります。たとえば、5列と5列の場合:
trellis.device("pdf", file="myplot.pdf")
p <- xyplot(V3 ~ iterations | V1, type="l", data=d, layout=c(5,5))
plot(p)
dev.off()
また、コードを使用してコードを実行するときにプロットを表示させるには source
, 、xyplotコマンドから出力を具体的にプロットする必要があります。
p <- xyplot(...)
plot(p)
コンソールで実行するとき、これは plot
(まあ、実際、 print
関数)はデフォルトで呼び出されます。
他のヒント
チェイスが言ったように、あなたが達成しようとしていることをよりよく想像できるように、あなたの質問を明確にしてください。混乱の山に追加するために、ここにあります lattice
あなたが望んでいると思うものの球場の解決策。
library(lattice)
fdt <- data.frame(col1 = seq(from = 1, to = 10, each = 10),
col2 = round(56 * rnorm(100, mean = 30, sd = 5)),
col3 = round(20 * rnorm(100, mean = 11,)))
xyplot(col3 ~ 1:100 | col1, data = fdt)
私はあなたがプロットしたいということを正確にフォローしているわけではありませんが、ここにあなたが正しい道を下ろし、適切なプロットコマンドに記入することができます...またはあなたの質問を明確にして、の最終結果を説明することができます。あなたのプロットはより詳細に見えるはずです。
2つのパッケージを利用します。 plyr
と ggplot2
. 。我々は使用するだろう plyr
データを適切なグループに分割してから使用するには ggplot2
実際のプロット用。を利用します pdf()
各ページに異なるプロットを機能させます。
library(ggplot2)
library(psych) #For copying in data, not needed beyond that.
df <- read.clipboard(header = F)
pdf("test.pdf")
d_ply(df, "V1", function(x) #Split on the first column
print(qplot(x$V3)) #Your plotting command should go here. This plots histograms.
)
dev.off() #Close the plotting device.
これはAnを生成します n ページPDF WHERE n V1(分割列)のグループの数を表します。 JPEG出力がある場合は、他の出力を作成するためのJPEGまたは他のグラフィックオプションをご覧ください。
編集:ご覧のとおり、人々はいくつかの方法であなたの質問を解釈しました。 @Romanのソリューションがあなたが望むものである場合、ここにほぼ同じGGPLOTコードがあります
qplot(col2, col3, data = fdt, geom = "point") + facet_wrap(~ col1 , nrow = 2)