Rev 88274 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
library(grid)HersheyLabel <- function(x, y=unit(.5, "npc")) {lines <- strsplit(x, "\n")[[1]]if (!is.unit(y))y <- unit(y, "npc")n <- length(lines)if (n > 1) {y <- y + unit(rev(seq(n)) - mean(seq(n)), "lines")}grid.text(lines, y=y, gp=gpar(fontfamily="HersheySans"))}################################################################################## Nesting of patterns, clipping paths, masks, groups, and paths## ALL disallowed within a path or clipping pathgrid.newpage()pat <- pattern(circleGrob(r=unit(.5, "cm"), gp=gpar(fill="black")),width=unit(2, "cm"), height=unit(2, "cm"),extend="repeat")path <- circleGrob(gp=gpar(fill=pat))pushViewport(viewport(clip=path))grid.rect(gp=gpar(fill="grey"))HersheyLabel("clipping path is based on circlecircle has (tiling) pattern fillresult is grey circle")grid.newpage()pat <- linearGradient()path <- circleGrob(gp=gpar(fill=pat))pushViewport(viewport(clip=path))grid.rect(gp=gpar(fill="grey"))HersheyLabel("clipping path is based on circlecircle has gradient fillresult is grey circle")grid.newpage()pat <- pattern(circleGrob(r=unit(.5, "cm"), gp=gpar(fill="black")),width=unit(2, "cm"), height=unit(2, "cm"),extend="repeat")path <- circleGrob(gp=gpar(fill=pat))grid.fillStroke(path, gp=gpar(fill="grey"))HersheyLabel("path is based on circlecircle has (tiling) pattern fillpath is filled greyresult is filled grey circle(pattern fill silently ignored)")grid.newpage()cpath <- circleGrob(r=.2)path <- circleGrob(vp=viewport(clip=cpath))grid.fillStroke(path, gp=gpar(fill="grey"))HersheyLabel("path is based on circlecircle has viewport withclipping path based on smaller circleresult is filled grey circle(clipping path ignored with warning)")grid.newpage()mask <- circleGrob(r=.2, gp=gpar(fill="black"))path <- circleGrob(vp=viewport(mask=mask))grid.fillStroke(path, gp=gpar(fill="grey"))HersheyLabel("path is based on circlecircle has viewport withmask based on smaller circleresult is filled grey circle(mask ignored with warning)")grid.newpage()group <- groupGrob(circleGrob(r=.2))path <- gTree(children=gList(circleGrob(), group))grid.fillStroke(path, gp=gpar(fill="grey"))HersheyLabel("path is based on circle AND group(group is smaller circle)result is filled grey circle(group ignored with warning)")grid.newpage()grid.define(circleGrob(r=.2), name="g")path <- gTree(children=gList(circleGrob(), useGrob("g")))grid.fillStroke(path, gp=gpar(fill="grey"))HersheyLabel("path is based on circle AND group *use*(group is smaller circle)result is filled grey circle(group ignored with warning)")grid.newpage()subpath <- strokeGrob(circleGrob(r=.2))path <- gTree(children=gList(circleGrob(), subpath))grid.fillStroke(path, gp=gpar(fill="grey"))HersheyLabel("path is based on circle AND subpath(subpath is smaller circle)result is filled grey circle(subpath ignored with warning)")grid.newpage()subpath <- strokeGrob(circleGrob(r=.2))path <- gTree(children=gList(subpath, circleGrob()))grid.fillStroke(path, gp=gpar(fill="grey"))HersheyLabel("path is based on subpath AND circle(subpath is smaller circle)result is filled grey circle(subpath ignored with warning)")################################################################################## TODOnotrun <- function() {} ## notrun()