2015-11-13 15 views
6

Tôi có một vấn đề đơn giản trong hàm lô của ngôn ngữ lập trình R. Tôi muốn vẽ một đường giữa các điểm (see this linkhow to plot in R), tuy nhiên, những gì tôi nhận được một cái gì đó kỳ lạ. Tôi muốn chỉ có một điểm được kết nối với một điểm khác, vì vậy mà tôi có thể nhìn thấy chức năng một cách liên tục, tuy nhiên, trong các điểm cốt truyện của tôi được kết nối ngẫu nhiên một số điểm khác. Xin vui lòng xem cốt truyện thứ hai.Đường kết nối các điểm trong hàm lô trong R

Dưới đây là các mã:

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") 

cốt truyện đầu tiên là đúng: enter image description here Trong khi thứ hai là không phải những gì tôi muốn, tôi muốn có một cốt truyện liên tục: enter image description here

+0

Xem thêm [Lô, đường kẻ và xáo trộn x và y] (http://r.789695.n4.nabble.com/Plot-lines-and-disordered-x-and-y-td880487.html) – Henrik

Trả lời

13

Bạn phải sắp xếp các giá trị 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) 

enter image description here

+0

Xin chào, Cảm ơn rất nhiều. Bạn có thể giải thích tại sao các giá trị của "x" và "f_x" cần phải được sắp xếp? – Sanchit

+2

Bởi vì bạn cần tăng giá trị x một cách đơn điệu để vẽ biểu đồ. – rcs

+1

nếu bạn sửa đổi dòng đầu tiên 'x <- sắp xếp (runif (100, -1,1))' câu lệnh cốt truyện của bạn từ câu hỏi cũng sẽ hoạt động. – rcs

Các vấn đề liên quan