2015-03-10 14 views
7

Tufte đưa ra một ví dụ điển hình xấu của sao chéo nở được bóp méo, hiệu ứng ánh sáng lung linh (. Visual Hiển thị thông tin định lượng, 2001, p 108) trông tương tự như:tái Tufte Moire rung

enter image description here

Mặc dù ông là crisper. Làm thế nào tôi có thể tái tạo điều này trong R? Vì nó không được coi là thực hành tốt để tìm ra cách dễ nhất để nhân rộng đang chứng minh thách thức.

Trả lời

9

Dưới đây là một tùy chọn sử dụng abline:

plot(NA,NA, xlim=c(0,100), ylim=c(0,100)) 
for(i in seq(-15,600,6)) { 
    abline(i, -3, lwd=6) 
} 

enter image description here

Sửa mỗi Tyler: Đây là những gì tôi đã sử dụng một cách chính xác trong một doc knitr, cũng giống như gây phiền nhiễu như bản gốc.

plot(NA,NA, xlim=c(0,100), ylim=c(0,100), ylab=NA, xlab=NA, yaxt='n', xaxt='n', bty = "n") 
for(i in seq(-15,500,6)) { 
    abline(i, -3, lwd=4) 
} 
+0

Đây là câu trả lời hay nhất. Không thường xuyên bạn muốn câu trả lời xấu :-) Đây là sự thật với +1 –

+1

của Tufte Cảm ơn Tyler. Đôi khi nó cảm thấy tốt để được xấu. Nhưng xin đừng nói với Hadley. Tôi không muốn bị đuổi khỏi câu lạc bộ. – eipi10

9

polygon để giải cứu:

plot(0:1,type="n") 
polygon(
    x=c(1,1,2,2), 
    y=c(1,0,0,1), 
    density=10, 
    angle=135, 
    lwd=5, 
    border=NA 
) 

enter image description here

+0

Phản hồi tốt và sử dụng thông minh đa giác. Các đầu được làm tròn một chút, nhưng tôi đã cố gắng để càng gần với Tufte càng tốt. +1 Cảm ơn bạn. –

+1

@TylerRinker - dễ dàng sửa bằng cách thêm đối số 'lend ='. '? par' liệt kê tất cả các tùy chọn vô số bạn có thể sử dụng để điều chỉnh loại đường. Ngoài ra, bạn chỉ có thể làm cho đa giác lớn hơn diện tích ô nếu bạn muốn nó cắt bớt. Hoặc sử dụng '? Clip' trước khi vẽ đồ thị đa giác - ví dụ :. 'clip (1,1,1,9,0,1,0,9)' – thelatemail

+0

Cuộc gọi tốt đẹp. Tôi hiếm khi làm việc trong đồ họa cơ bản nữa và quên đi rất nhiều thứ bạn có thể làm. –

6

Để hoàn chỉnh, đây là một giải pháp ggplot2, như mọi thách thức là nhận được dữ liệu cơ bản đúng ...

hatch <- function(xsequence, ysequence, weight = 1) { 
    require(ggplot2) 
    df <- data.frame(x = c(rep(0, length(ysequence)),xsequence, xsequence, rep(max(xsequence), length(ysequence))), 
        y = c(ysequence, rep(max(ysequence), length(xsequence)), rep(0, length(xsequence)), ysequence), 
        group = seq_along(1:(length(xsequence) + length(ysequence)))) 
    p <- ggplot(df, aes(x, y)) + geom_line(aes(group = group), size = weight) 
    print(p + theme(panel.background = element_rect(fill = "transparent"), 
        axis.text = element_blank(), 
        axis.ticks = element_blank(), 
        axis.title = element_blank())) 

} 
hatch(1:100, 1:40, 1.5) 

enter image description here

+0

Cảm ơn cách tiếp cận lưới. Điều này đòi hỏi nhiều kỹ thuật hơn. +1 –

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