2014-09-29 18 views
15

Một số chức năng trong hệ thống đồ họa cơ sở R, trong đó có rect()polygon(), hỗ trợ cross-nở qua họ angle=density= đối số:Làm thế nào để áp dụng cross-nở đến một đa giác bằng cách sử dụng hệ thống đồ họa lưới?

x = c(0, 0.5, 1, 0.5) 
y = c(0.5, 1, 0.5, 0) 
par(mar=c(0,0,0,0)) 
plot.new() 
polygon(x, y, angle=45, density=10) 

enter image description here

Làm thế nào tôi có thể áp dụng tương tự chéo nở để một đa giác được vẽ bởi lưới hệ thống đồ họa grid.polygon() chức năng:

library(grid) 
grid.newpage() 
grid.polygon(x,y) 

enter image description here

Tôi đã nhìn vào tài liệu cho ?grid.polygon?gpar, và đã lướt qua cuốn sách Paul Murrel về đồ họa R, và cho đến nay đưa ra sản phẩm nào. Tôi có thiếu một cái gì đó hiển nhiên? Nếu không, có một số hack đơn giản mà sẽ làm cho điều này có thể?

+3

không thể thực hiện được. Tuy nhiên, nó có thể thông qua gridSVG ('grid.patternFill') – baptiste

+0

@baptiste - Điều cần biết. Đến từ bạn, tôi sẽ lấy nó là +/dứt khoát. Cũng xin cảm ơn con trỏ tới hàm gridSVG đó. –

+1

tôi chưa bao giờ thực sự cố gắng, và nó tương đối gần đây tôi nghĩ. Đây là một ví dụ, https://www.stat.auckland.ac.nz/~paul/Talks/London2013/barchart/barchart.R – baptiste

Trả lời

21

Dưới đây là một ví dụ với gridSVG chuyển thể từ Paul Murrell's presentation

library(gridSVG) 
library(grid) 
x = c(0, 0.5, 1, 0.5) 
y = c(0.5, 1, 0.5, 0) 
grid.newpage() 
grid.polygon(x,y, name="goodshape") 

pat <- pattern(linesGrob(gp=gpar(col="black",lwd=3)), 
    width = unit(5, "mm"), height = unit(5, "mm"), 
    dev.width = 1, dev.height = 1) 

# Registering pattern 
registerPatternFill("pat", pat) 
# Applying pattern fill 
grid.patternFill("goodshape", label = "pat") 

grid.export("test-pattern.svg") 

enter image description here

grobs phức tạp hơn được phép là tốt, kể từ svg sẽ chăm sóc của clipping.

enter image description here

+1

Biểu đồ thanh chữ thập nở CÓ! :-) +1 –

+0

bằng cách nào đó không làm việc cho tôi, R phiên bản 3.3.0 và lưới 3.3.0, gridSVG 1.5-0 – xealits

+0

@baptiste bạn có biết cách lưu nó trong PDF (không phải SVG) không – Eugeny89

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