2014-09-29 18 views
15

Diverse funzioni nel sistema grafico di base di R, tra cui rect() e polygon(), supporto cross-cova attraverso i loro angle= e density= argomenti:Come applicare il tratteggio incrociato a un poligono usando il sistema grafico a griglia?

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

Come potrebbero fare domanda simile tratteggio ad un poligono disegnato dal grid.polygon() la funzione del sistema grafico griglia:

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

enter image description here

Ho guardato nella documentazione per ?grid.polygon e ?gpar, ed ho scremato attraverso il libro di Paul Murrel sulla grafica R, e sono finora venuto a mani vuote. Mi manca qualcosa di ovvio? Se no, c'è qualche semplice hack che renderà questo possibile?

+3

non è possibile. È comunque possibile tramite gridSVG ('grid.patternFill') – baptiste

+0

@baptiste - Buono a sapersi. Venendo da te, lo prenderò come +/definitivo. Grazie anche per il puntatore alla funzione gridSVG. –

+1

non ho mai provato, ed è relativamente recente, penso. Ecco un esempio, https://www.stat.auckland.ac.nz/~paul/Talks/London2013/barchart/barchart.R – baptiste

risposta

21

Ecco un esempio con gridSVG adattato da 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 più complessi sono consentiti pure, poiché svg prende cura del clipping.

enter image description here

+1

Grafici a croce tratteggiati SÌ! :-) +1 –

+0

in qualche modo non funziona per me, R versione 3.3.0 e griglia 3.3.0, gridSVG 1.5-0 – xealits

+0

@baptiste sai come salvarlo in PDF (non in SVG) – Eugeny89