2013-03-16 44 views
7

Sử dụng R, tôi đã vẽ một ô được khoanh vẽ. Nếu bạn thấy các đường cong, chúng không trơn tru. Làm thế nào để làm cho họ mịn? Ngay cả excel âm mưu xa hơn nhiều đường cong mượt mà hơn. Tính năng thiết bị: cửa sổ 7, độ phân giải màn hình = 1366 x 768 (tối đa)Cách vẽ các đường cong mượt mà trong R

Đây là cốt truyện.

plot

Mã sau được sử dụng để vẽ cốt truyện.

plot(NA,xlim=c(0,1),ylim=c(0,1),xlab="delta",ylab="K", xaxs="i",yaxs="i") # Empty plot 
a1 <- curve((x+x^7-x^2-x^4)/(1+x-x^3-x^4), from=0, n=450000, add = TRUE) # First curve 

Full code đang sẵn here

+0

Bạn cũng nên thêm cốt truyện tương ứng ..not một bản gốc ... – agstudy

+1

Mở thiết bị gì (thạch anh/x11, jpeg/png/pdf ...) bạn đã vẽ nó? – plannapus

+0

@plannapus Tôi không hiểu câu hỏi của bạn, vui lòng khám phá –

Trả lời

5

Tôi khá chắc chắn rằng nếu bạn vẽ hình của bạn ví dụ như pdf, các đường cong hoàn toàn trơn tru. Đó là màn hình hiển thị nội bộ của Rgui cho thấy đường cong không trơn tru và việc dán bản sao trên đó có thể gây ra sự cố. Tốt hơn là trực tiếp vẽ sơ đồ vào tệp, như sau:

# Open device: 
pdf("D:/test.pdf") #change for appropriate file path 
plot(NA,xlim=c(0,1),ylim=c(0,1),xlab="delta",ylab="K", xaxs="i",yaxs="i") 
a1 <- curve((x+x^7-x^2-x^4)/(1+x-x^3-x^4), from=0, n=450000, add = TRUE) 
dev.off() #close device 

Bây giờ, hãy xem pdf và trông hoàn toàn ổn. Nếu bạn muốn có hình ảnh jpg ví dụ, hãy sử dụng chức năng jpeg v.v., xem ?jpeg để biết thêm chi tiết về cách lưu dưới dạng tiff, jpeg, png hoặc bmp và đối số cho kích thước, độ phân giải và như vậy.

(lưu ý, các thuật ngữ thiết bị vv được sử dụng ở đây có thể không hoàn toàn chính xác, tôi không hoàn toàn quen thuộc với thuật ngữ này, ai đó thông minh hơn có thể chỉnh sửa nếu thích hợp).

+0

thiết bị là thuật ngữ chính xác mà tôi tin. (xem '? device') – plannapus

+0

Tôi đã thử phương pháp này. 'pdf' thực sự hoạt động tốt, nhưng sử dụng' png' không tạo ra bất kỳ sự khác biệt nào. –

+0

tại sao tôi phải đóng 'R', để đọc tệp được tạo? –

2

Tôi không chắc chắn về vấn đề của bạn somthness (nó không phải là rõ ràng trong cốt truyện bạn hiển thị), nhưng bạn có thể cải thiện bằng cách làm khối (hoặc Hermite) spline nội suy của các điểm của bạn. Dưới đây là một số tùy chọn sử dụng splinesplinefun.

enter image description here

layout(matrix(c(1,2,3),nrow=3,byrow=TRUE)) 
plot(NA,xlim=c(0,1),ylim=c(0,0.2),xlab="delta",ylab="K", xaxs="i",yaxs="i", 
    main='orginal plot with 45000 points') # Empty plot 
a1 <- curve((x+x^7-x^2-x^4)/(1+x-x^3-x^4), from=0, n=45000, add = TRUE) 
x <- seq(0,1,length.out=1000) 
y <- (x+x^7-x^2-x^4)/(1+x-x^3-x^4) 
f <- splinefun(x, y) 
plot(NA,xlim=c(0,1),ylim=c(0,0.2),xlab="delta",ylab="K", xaxs="i",yaxs="i", 
    main='splinefun plot with 1000 points') 
curve(f(x),0, 1, col = "green", lwd = 1.5,add=TRUE) 
plot(NA,xlim=c(0,1),ylim=c(0,0.2),xlab="delta",ylab="K", xaxs="i",yaxs="i", 
    main='spline plot with 1000 points') 
lines(spline(x,y), col = 2) 
8

Tại thời điểm này, có vẻ như cốt truyện của bạn là lởm chởm không phải vì đường cong chính nó, nhưng vì cách màn hình của bạn sẽ hiển thị nó.

@Hemmo đề xuất khắc phục giải pháp này bằng cách sử dụng định dạng đồ họa vector thay vì định dạng raster. Đây là giải pháp tốt nhất, nhưng nếu bạn tuyệt vọng cần phải sử dụng một định dạng raster, bạn có thể sử dụng anti-aliasing.

Chống răng cưa có nghĩa là cốt truyện được vẽ bằng một số lông tơ màu xám xung quanh các đường kẻ để chúng trông giống như chúng cong vào mắt người. Bạn sẽ thấy điều này dễ dàng nếu bạn phóng to hình ảnh chống răng cưa. Còn bây giờ:

png("no-alias.png") 
# Your code 
dev.off() 

enter image description here

cairographics cung cấp anti-aliasing. Vì vậy, sử dụng nó như một tùy chọn để png:

png("alias.png", type="cairo") 
# Your code again 
dev.off() 

enter image description here

+0

Được đánh giá cao về điều này. Cảm ơn. – Balter

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