线而不是点(R)不那么容易

时间:2014-05-20 17:26:43

标签: r plot

如果你可以帮助我,那就太好了: 所以我正在做一个双曲线(SDT)图,我有一个问题:这里我的图: Dot type = "l"

我第一次遇到这个问题...真的不知道如何解决它,我只是认为我的数据没有订购但我怎么能轻松订购?

这是我的代码(但实际上没什么特别的):

x = TDSindice2$Hit
mean = mean(x)
sd = sd(x)

y = dnorm(x,mean,sd)

plot(x,y, col = "red")


x = TDSindice2$Fa
mean = mean(x)
sd = sd(x)

y = dnorm(x,mean,sd)
par(new=TRUE)

plot(x,y ,type = "l", col ="blue")

感谢所有人:)

1 个答案:

答案 0 :(得分:5)

您需要在绘图前增加x 的值来订购数据。例如:

set.seed(1)
x <- runif(50)
y <- 1.2 + (1.4 * x) + (-2.5 * x^2)

plot(x, y)
lines(x, y)

enter image description here

order()函数可用于生成索引,当应用于变量/对象时,该索引将该对象的值按所需顺序放置(默认情况下增加):

ord <- order(x)
plot(x[ord], [ord], type = "o")

enter image description here

但是,如果xy位于同一个对象,一个数据框中,并且只对其中的行进行排序,那么你会更好:

dat <- data.frame(x = x, y = y)
ord <- with(dat, order(x))
plot(y ~ x, data = dat[ord, ], type = "o") ## or
## lines(y ~ x, data = dat[ord, ])

请注意,order()用于索引数据,因此我们不会更改原始排序,我们只是在将对象提供给plot()函数时置换行。