1. ホーム
  2. r

[解決済み] Rのplot関数で点を結ぶ線 [重複].

2022-02-15 13:56:37

質問

プログラミング言語Rのplot関数で簡単な問題があります。点( このリンクを参照してください Rでプロットする方法 しかし、何か変な感じです。私は、関数を連続的に見ることができるように、1つの点だけが他の点と接続されるようにしたいのですが、私のプロットでは、点がランダムに他の点と接続されています。2番目のプロットをご覧ください。

以下はそのコードです。

x <- runif(100, -1,1) # inputs: uniformly distributed [-1,1]
noise <- rnorm(length(x), 0, 0.2) # normally distributed noise (mean=0, sd=0.2)
f_x <- 8*x^4 - 10*x^2 + x - 4  # f(x), signal without noise
y <- f_x + noise # signal with noise

# plots 
x11()
# plot of noisy data (y)
plot(x, y, xlim=range(x), ylim=range(y), xlab="x", ylab="y", 
     main = "observed noisy data", pch=16)

x11()
# plot of noiseless data (f_x)
plot(x, f_x, xlim=range(x), ylim=range(f_x), xlab="x", ylab="y", 
     main = "noise-less data",pch=16)
lines(x, f_x, xlim=range(x), ylim=range(f_x), pch=16)

# NOTE: I have also tried this (type="l" is supposed to create lines between the points in the right order), but also not working: 
plot(x, f_x, xlim=range(x), ylim=range(f_x), xlab="x", ylab="y", 
     main = "noise-less data", pch=16, type="l")

最初のプロットは正しい。 2番目は私が望むものではありませんが、私は連続したプロットが欲しいのです。

解決方法は?

xの値をソートする必要があります。

plot(x, f_x, xlim=range(x), ylim=range(f_x), xlab="x", ylab="y", 
     main = "noise-less data",pch=16)
lines(x[order(x)], f_x[order(x)], xlim=range(x), ylim=range(f_x), pch=16)