0

私はデータをプロットすることができ、すべてがうまくいくようです。唯一の問題は、行マーカーを挿入するかどうかを R が決定しているように見えることです。いくつかの異なるデータセットがあります。1500 のデータセットの場合、プロットは正常に機能し、マーカーが表示されます。他のデータセットはすべて 3000 以上のポイントを持ち、プロットはすべてのマーカーを無視し、線だけが表示されます。以下に、データをプロットするために使用されるコードと、プロットの図の例を示します。

私の質問は、どうすればRがマーカー付きの線をプロットすることを保証できますか? 私は何か間違ったことをしていますか?

お時間をいただきありがとうございます。

png(filename="figures/all.normdtime.png", width=800, height=600)
plot(ecdf(data1[,10]), col="blue", ann=FALSE,       pch=c(1,NA,NA,NA,NA,NA,NA,NA,NA), cex=2) 
lines(ecdf(data2[,10]), col="green", pch=c(3,NA,NA,NA,NA,NA,NA,NA,NA), cex=2)
lines(ecdf(data3[,10]), col="red", pch=c(8,NA,NA,NA,NA,NA,NA,NA,NA), cex=2)
lines(ecdf(data4[,10]), col="orange", pch=c(2,NA,NA,NA,NA,NA,NA,NA,NA), cex=2)

title(xlab="Transfer rate (bytes/ms)")
title(main="ECDF Normalized Download Time")

dev.off()

マーカーなし、21100 点をプロット

マーカー付、1400点プロット

4

1 に答える 1

0

私はこのようなことを試してみます:

data1 <- dnorm(seq(-5,5,.001))
x <- ecdf(data1)

plot(ecdf(data1), col="blue", ann=FALSE, pch=c(1,rep(NA,10000)), cex=2) 
points(x=knots(x)[seq(1,length(knots(x)),5)], y=ecdf(data1)(knots(x)[seq(1,length(knots(x)),5)]), col="red",pch=3)

title(xlab="Transfer rate (bytes/ms)")
title(main="ECDF Normalized Download Time")

ここに画像の説明を入力

約をプロットしたため、元の ECDF は表示されません。1500ポイント。より少なくしたい場合は5、 x および y 引数内の値pointsをより大きな数、つまり 100 に変更するだけです。すると、プロットされた ~70 ポイントが得られます。

ここに画像の説明を入力

利用可能なデータはありませんが、これでうまくいくと思います:

ecdf1 <- ecdf(data1[,10])
ecdf2 <- ecdf(data2[,10])
ecdf3 <- ecdf(data3[,10])
ecdf4 <- ecdf(data4[,10])

knots1 <- knots(ecdf1)
knots2 <- knots(ecdf2)
knots3 <- knots(ecdf3)
knots4 <- knots(ecdf4)

n <- 10 # every 10th point

png(filename="figures/all.normdtime.png", width=800, height=600)

plot(ecdf1, col="blue", ann=FALSE) 
points(x=knots1[seq(1,length(knots1),n)], y=ecdf1(knots1[seq(1,length(knots1),n)]), col="blue",pch=1)

lines(ecdf2, col="green")
points(x=knots2[seq(1,length(knots2),n)], y=ecdf2(knots2[seq(1,length(knots2),n)]), col="green",pch=3)

lines(ecdf3, col="red",)
points(x=knots3[seq(1,length(knots3),n)], y=ecdf3(knots3[seq(1,length(knots3),n)]), col="red",pch=8)

lines(ecdf4, col="orange")
points(x=knots4[seq(1,length(knots4),n)], y=ecdf4(knots4[seq(1,length(knots4),n)]), col="orange",pch=2)


title(xlab="Transfer rate (bytes/ms)")
title(main="ECDF Normalized Download Time")

dev.off()
于 2015-10-07T17:38:31.363 に答える