2013-01-14 32 views
6

Có phải bất kỳ quá trình nào của chúng để cải thiện các đường răng cưa được tạo ra bởi geom_line() kết hợp nhiều điểm vào các dòng có thể hiển thị trơn tru trong ggplot2 không?Làm thế nào để cải thiện biểu đồ đường răng cưa trong ggplot2?

 lai.se <- structure(list(DOS = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("D1", "D2", "D3"), class = "factor"), 
    DAS = c(31L, 84L, 113L, 132L, 160L, 35L, 82L, 108L, 126L, 
    146L, 37L, 83L, 94L, 113L, 134L), N = c(24L, 24L, 24L, 24L, 
    24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L), LAI = c(1.5879167, 
    4.3241667, 3.70375, 2.9704167, 0.1879167, 1.7679167, 3.7670833, 
    3.4104167, 2.7879167, 0.195, 1.3179167, 3.5233333, 3.1604167, 
    2.45875, 0.2758333), sd = c(0.4276323, 0.32478644, 0.34151596, 
    0.3338638, 0.09868611, 0.18551876, 0.38212767, 0.31431747, 
    0.35024189, 0.08836682, 0.16378616, 0.29256982, 0.28257326, 
    0.44131535, 0.09536733), se = c(0.08729008, 0.06629675, 0.06971165, 
    0.06814966, 0.02014422, 0.03786886, 0.07800148, 0.06415978, 
    0.07149283, 0.0180378, 0.03343271, 0.05972057, 0.05768002, 
    0.09008312, 0.01946677), ci = c(0.18057328, 0.13714529, 0.14420954, 
    0.14097832, 0.04167149, 0.0783377, 0.16135836, 0.13272463, 
    0.14789418, 0.03731404, 0.06916083, 0.1235414, 0.11932022, 
    0.18635113, 0.04027009)), .Names = c("DOS", "DAS", "N", "LAI", 
"sd", "se", "ci"), class = "data.frame", row.names = c(NA, -15L 
)) 
    ggplot(lai.se, aes(x=DAS, y=LAI, colour=DOS)) + 
    geom_errorbar(aes(ymin=LAI-se, ymax=LAI+se), colour ="black", size =.5, width=1, position=position_dodge(.9)) + 
    geom_line() + 
    geom_point()+ theme_bw() 

Đường được tạo bằng cách sử dụng các mã này là rất nhiều đường zig-zag được pixel hóa. Có cách nào của họ ra để âm mưu mượt mà hơn "solid" dòng (không zig-zag tìm kiếm)?

> sessionInfo() 
R version 2.14.2 (2012-02-29) 
Platform: i386-pc-mingw32/i386 (32-bit) 

locale: 
[1] LC_COLLATE=English_India.1252 LC_CTYPE=English_India.1252 LC_MONETARY=English_India.1252 LC_NUMERIC=C     
[5] LC_TIME=English_India.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] ggplot2_0.9.2.1 

loaded via a namespace (and not attached): 
[1] colorspace_1.1-1 dichromat_1.2-4 digest_0.5.2  grid_2.14.2  gtable_0.1.1  labeling_0.1  
[7] MASS_7.3-17  memoise_0.1  munsell_0.4  plyr_1.7.1   proto_0.3-9.2  RColorBrewer_1.0-5 
[13] reshape2_1.2.1  scales_0.2.2  stringr_0.6.1  tools_2.14.2  
+0

Bạn có nghĩa là dòng anti-aliased như thế này ?: https://en.wikipedia.org/wiki/Xiaolin_Wu % 27s_line_algorithm –

+0

Tôi đồng ý với @eznme rằng bạn có thể đề cập đến các vấn đề chống răng cưa có thể liên quan đến thiết bị bạn đang in biểu đồ, chứ không phải chính ggplot2. Việc giải quyết nó sẽ phụ thuộc vào cấu hình hệ thống và nền tảng của bạn, đó là lý do tại sao tôi yêu cầu đầu ra của 'sessionInfo()'. – joran

+0

@joran Tôi đã thêm sessionInfo(). hãy giúp tôi ra. Tôi đang sử dụng RStudio (0.97.248) – Barun

Trả lời

4

Tôi đoán bạn đang cố gắng làm mịn dòng. Đây có phải là công viên bóng của những gì bạn đang theo dõi không?

ggplot(lai.se, aes(x=DAS, y=LAI, colour=DOS)) + 
    geom_errorbar(aes(ymin=LAI-se, ymax=LAI+se), colour ="black", size =.5, width=1, position=position_dodge(.9)) + 
    geom_smooth() + 
    geom_point()+ theme_bw() 

enter image description here

+1

cảm ơn sự giúp đỡ của bạn. nhưng tôi đã thử điều này. bạn thậm chí có thể nhận thấy ở đây cũng có những dòng được tạo ra bị lởm chởm. những gì tôi đang tìm kiếm là đồ thị đường chất lượng cao như những người tạo ra trong MS Excel (không pixelated). – Barun

4

Output đồ thị của bạn vào một tập tin được lưu trữ trong một định dạng vector, chẳng hạn dưới dạng PDF hoặc PostScript, và sau đó sử dụng ImageMagick hoặc tương tự để làm cho rằng hình ảnh vector để một bitmap (PNG, JPEG, vv .) ở độ phân giải cao (150, 300 hoặc thậm chí 600 dpi):

$ convert myGraphAsVector.pdf -density 300 myGraphAs300DpiBitmap.png 

Kích thước tập tin sẽ được lớn (và nhận được ngày càng lớn hơn khi bạn tăng độ phân giải của sản phẩm cuối cùng), nhưng jaggedness của bitmap sẽ xuất hiện để biến mất ở pixel cao hơn mật độ.

4

Trong câu trả lời cho nhận xét của tôi, bạn xác nhận rằng bạn muốn anti-alias đường của bạn (không thay đổi đường cong của cốt truyện của bạn).

Tôi nghĩ rằng cách duy nhất để làm điều đó trong R là sử dụng Cairo và đây là một hướng dẫn về làm thế nào để làm điều đó với vòng tròn, tôi hy vọng bạn có thể thích ứng đó để làm điều đó với dòng:

http://www.r-bloggers.com/weekend-art-in-r-part-3/

3

Như những người khác đã đề cập, một định dạng hình ảnh dựa trên vector như PDF hoặc SVG có thể là cách tốt nhất để đi. Nếu bạn muốn sử dụng bitmap, như PNG, thì bạn có thể tăng độ phân giải của hình ảnh với tùy chọn res của png().

png("myplot.png", width = 1800, height = 1800, res = 600)

này sẽ tạo ra một inch 3 bằng hình ảnh 3 inch (ở kích thước thực tế) tại 600 dpi. Theo kinh nghiệm của tôi, kích thước tệp vẫn hợp lý cho các biểu đồ tương đối đơn giản.

Xem bài viết trên blog này để biết thêm ý tưởng về làm thế nào để cải thiện hình ảnh của bạn:

http://blog.revolutionanalytics.com/2009/01/10-tips-for-making-your-r-graphics-look-their-best.html

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