Version: | 0.9-7 |
Depends: | R (≥ 3.0.0), methods, grDevices, graphics, grid, XML |
Suggests: | lattice, cluster, colorspace, survival |
SystemRequirements: | ghostscript |
Title: | Importing Vector Graphics |
Description: | Functions for converting, importing, and drawing PostScript pictures in R plots. |
URL: | https://r-forge.r-project.org/projects/grimport/,https://doi.org/10.18637/jss.v030.i04,https://stattech.wordpress.fos.auckland.ac.nz/2018/09/20/2018-09-importing-general-purpose-graphics-in-r/ |
License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
NeedsCompilation: | no |
Packaged: | 2023-03-09 00:47:24 UTC; pmur002 |
Author: | Paul Murrell [aut, cre], Richard Walton [aut], Simon Potter [ctb], Tomas Kalibera [ctb], Harold Gutch [ctb] |
Maintainer: | Paul Murrell <p.murrell@auckland.ac.nz> |
Repository: | CRAN |
Date/Publication: | 2023-03-09 14:20:09 UTC |
Class "Picture"
Description
A collection of paths (polylines or polygons) that together describe a picture.
Objects from the Class
Objects can be created by calls of the form new("Picture", ...)
.
~~ describe objects here ~~
Slots
paths
:A list of objects of class
"PictureStroke"
(polylines) or"PictureFill"
(polygons).summary
:Object of class
"PictureSummary"
Methods
- [
signature(x = "Picture")
: subset the paths of a picture to produce a new picture (includeing a new, updated summary).- [[
signature(x = "Picture")
: extract either a single path or, more usefully, the sub-paths of a"PictureText"
object, to produce a new picture (includeing a new, updated summary).- grobify
signature(object = "Picture")
: convert a picture into a grid grob (for use as a one-off image).- symbolize
signature(object = "Picture")
: convert a picture into a grid grob (for use as a plotting symbol).
Author(s)
Paul Murrell
See Also
readPicture
,
grid.picture
,
grid.symbols
and
PictureStroke-class
PictureFill-class
PictureSummary-class
.
Class "PictureChar"
Description
A description of a polygon path that describes the outline of a character (and might be part of a larger picture).
Slots
x
:Object of class
"numeric"
y
:Object of class
"numeric"
rgb
:Object of class
"character"
that specifies the fill colour for the polygon.lwd
:Object of class
"numeric"
that specifies the line width of the polygon (only used if the character outline is stroked).char
:Object of class
"character"
that specifies the character that this path represents.
Extends
Class "PictureOp"
, directly.
Methods
- grobify
signature(object = "PictureChar")
: convert to a grid grob (for one-off drawing). Use argumentfillText
to fill the text rather than just stroke the outline. In that case, the first path for this character is filled in the appropriate colour and all subsequent paths are filled using a colour controlled by thebgText
argument (default is white).- symbolize
signature(object = "PictureChar")
: convert to a grid grob (for drawing as a data symbol). Currently draws nothing.- drawPath
signature(object = "PictureChar")
: draws a traced character path as part of the current plot.
Author(s)
Paul Murrell
See Also
Picture-class
,
PictureStroke-class
,
and
grid.picture
,
grid.symbols
.
Class "PictureFill"
Description
A description of a polygon path (that might be part of a larger picture).
Slots
x
:Object of class
"numeric"
y
:Object of class
"numeric"
rgb
:Object of class
"character"
that specifies the fill colour for the polygon.lwd
:Object of class
"numeric"
that specifies the line width of the polygon (not typically used because the polygon is meant to be filled not stroked).rule
:Object of class
"character"
with the valueevenodd
ornonzero
indicating the fill rule for the path.
Extends
Class "PictureOp"
, directly.
Methods
- grobify
signature(object = "PictureFill")
: convert to a grid grob (for one-off drawing). There is a logical argumentuse.gc
which can be used to turn off the graphics context coming from the object so that a different one can be specified via thegp
argument.- symbolize
signature(object = "PictureFill")
: convert to a grid grob (for drawing as a data symbol).- drawPath
signature(object = "PictureFill")
: draws a traced polygonx as part of the current plot.
Author(s)
Paul Murrell
See Also
Picture-class
,
PictureStroke-class
,
and
grid.picture
,
grid.symbols
.
Class "PictureOp"
Description
A virtual class from which "PictureStroke"
and "PictureFill"
are derived.
Slots
x
:Object of class
"numeric"
y
:Object of class
"numeric"
rgb
:Object of class
"character"
giving colour information for the path.lty
:Object of class
"numeric"
giving line type information for the path.lwd
:Object of class
"numeric"
giving line width information for the path.lineend
:Object of class
"numeric"
giving the type of line end style (round, butt, square).linejoin
:Object of class
"numeric"
giving the type of line join style (round, mitre, bevel).linemitre
:Object of class
"numeric"
giving the line mitre limit (as a number greater than 1).
Author(s)
Paul Murrell
See Also
PictureStroke-class
and
PictureFill-class
.
Class "PictureStroke"
Description
A polyline path (that might be part of a larger picture).
Slots
x
:Object of class
"numeric"
y
:Object of class
"numeric"
rgb
:Object of class
"character"
giving the colour of the polyline.lwd
:Object of class
"numeric"
giving the width of the polyine.
Extends
Class "PictureOp"
, directly.
Methods
- grobify
signature(object = "PictureStroke")
: convert into a grid grob (for one-off drawing). There is a logical argumentuse.gc
which can be used to turn off the graphics context coming from the object so that a different one can be specified via thegp
argument.- symbolize
signature(object = "PictureStroke")
: convert into a grid grob (for drawing as a data symbol)).- drawPath
signature(object = "PictureStroke")
: draws a traced line as part of the current plot.
Author(s)
Paul Murrell
See Also
Picture-class
,
PictureFill-class
,
and
grid.picture
,
grid.symbols
.
Class "PictureSummary"
Description
Summary information about a picture such as the number of paths and bounding box information.
Slots
numPaths
:Object of class
"numeric"
xscale
:Object of class
"numeric"
range of x-values in picture.yscale
:Object of class
"numeric"
range of y-values in picture.
Author(s)
Paul Murrell
See Also
Class "PictureText"
Description
A description of a piece of text to draw, at a particular location and a particular size (and it might be part of a larger picture).
Slots
string
:Object of class
"character"
x
:Object of class
"numeric"
y
:Object of class
"numeric"
w
:Object of class
"numeric"
angle
:Object of class
"numeric"
rgb
:Object of class
"character"
that specifies the fill colour for the polygon.lwd
:Object of class
"numeric"
that specifies the line width of the polygon (only used if the character outline is stroked).
Extends
Class "PictureOp"
, directly.
Methods
- grobify
signature(object = "PictureText")
: convert to a grid grob (for one-off drawing). In addition to ause.gc
argument, there is afillText
argument to specify whether to stroke or fill text paths. Filling text paths is not necessarily a good idea because some characters have holes (e.g., the letter ‘o’). ThebgText
argument can be used to specify a colour to use to fill these holes; this argument can actually be a named vector of colours so that, e.g., the hole in an ‘o’ is filled white, but the dot on an ‘i’ is filled black. Finally, there is asizeByWidth
argument which controls whether text is sized based on the traced width or based on the traced height of the original text.- symbolize
signature(object = "PictureText")
: convert to a grid grob (for drawing as a data symbol). Currently draws nothing.- drawPath
signature(object = "PictureText")
: draws a traced piece of text as part of the current plot.
Author(s)
Paul Murrell
See Also
Picture-class
,
PictureChar-class
,
and
grid.picture
,
grid.symbols
.
Convert PostScript file to RGML file
Description
Converts a PostScript file into an RGML file, which is an XML document describing an image that can be read into R.
Usage
PostScriptTrace(file, outfilename,
charpath=TRUE, charpos=FALSE,
setflat=NULL, defaultcol="black",
encoding="ISO-8859-1", scaleEPS=.01)
Arguments
file |
The name of the PostScript file. |
outfilename |
The name of the XML document. |
charpath |
A boolean indicating whether text in the PostScript file should be converted to vector outlines, or left as just text. |
charpos |
A boolean indicating whether text in the PostScript file should be treated as individual characters, each with its own location. |
setflat |
A number that controls how many straight lines a curve is broken into. Lower values break a curve into more lines. |
defaultcol |
The default colour to use when grImport is unable to determine a colour for a path. This may occur when patterns are present in a PostScript image. |
encoding |
A character value giving the encoding for the resulting RGML file. |
scaleEPS |
A numeric cut-off used to decide when to convert a stroke to a fill if the pen is skewed (the difference between the x-scale factor and the y-scale factor). |
Details
This function calls ghostscript to do the conversion, so will only work if ghostscript is installed on your system.
If text is converted to outlines, it can be drawn as outlines,
or filled using a crude algorithm which may or may not work
(see grid.picture
). On the other hand, if text is left
as just text, font information is not stored so the text may
not end up looking much like the original.
Ghostscript is only going to emit text in a single-byte encoding, so the RGML file should have an explicit encoding (otherwise XML parsers are likely to assume UTF-8 and barf on any non-ASCII text). The default encoding used is ISO-8859-1 (ISOLatin1), but you can specify another if you know that the source file has text that ghostscript will emit in a different encoding. There may have to be a bit of guesswork, or inspection of the source PostScript file.
References
Draw a Picture Object
Description
This is a generic function that
does the hard work for picture
when
drawing paths of a "Picture"
object
as part of the current plot.
Usage
drawPath(p, trans, ...)
Arguments
p |
A |
trans |
A function that takes two arguments, |
... |
Other arguments, typically graphical parameters. |
Author(s)
Paul Murrell
See Also
picture
and
grid.picture
Explode Complex Picture Paths
Description
This function converts complex paths within a "Picture"
object
(paths that contain more than one move operation) into multiple
simple paths (paths with only one move operation).
Usage
explodePaths(picture)
Arguments
picture |
A |
Value
A "Picture"
object.
Author(s)
Paul Murrell
See Also
Draw a Picture Object
Description
These function take a "Picture"
object and
either draw the picture or create a grid graphical object
representing the picture.
Usage
grid.picture(...)
pictureGrob(picture, x = 0.5, y = 0.5,
width = 1, height = 1, just = "centre",
exp = 0.05, xscale = NULL, yscale = NULL,
distort = FALSE,
FUN = grobify, ..., name = NULL, gp = gpar())
Arguments
picture |
A |
x |
A single numeric value or unit object specifying an x-value. |
y |
A single numeric value or unit object specifying a y-value. |
width |
A single numeric value or unit object specifying a width. |
height |
A single numeric value or unit object specifying a height. |
just |
The justification of the picture
relative to its (x, y) location. If there are two values, the first
value specifes horizontal justification and the second value specifies
vertical justification. Possible string values are: |
exp |
An expansion factor; determines whether any space is left between the extent of the picture and the bounding rectangle it is drawn within. |
xscale |
A numeric vector of length two indicating the minimum and maximum on the x-scale. |
yscale |
A numeric vector of length two indicating the minimum and maximum on the y-scale. |
distort |
A logical value indicating whether the image should preserve its aspect ratio or distort to fit the area it is being drawn within. |
FUN |
The function used to convert paths within the picture to grid grobs. |
... |
For |
name |
A character identifier. |
gp |
An object of class |
Value
A grid gTree.
Author(s)
Paul Murrell
See Also
grobify
and
grid.symbols
Draw a Picture Object
Description
These function take a "Picture"
object and
either draw the picture at several locations
or create a grid graphical object
representing the picture (drawn at several locations).
Usage
grid.symbols(...)
symbolsGrob(picture, x = unit(0.5, "npc"), y = unit(0.5, "npc"),
size = unit(1, "npc"), units = "npc", ...,
name = NULL, gp = gpar())
Arguments
picture |
A |
x |
A numeric vector or unit object specifying x-values. |
y |
A numeric vector or unit object specifying y-values. |
size |
A numeric vector or unit object specifying symbol size. |
units |
The default units to use if |
... |
For |
name |
A character identifier. |
gp |
An object of class |
Value
A grid gTree.
Author(s)
Paul Murrell
See Also
Convert a Picture into a Grid Grob
Description
Converts an entire "Picture"
object, or
a path element thereof,
into an appropriate grid grob. Not usually called directly
by the user; usually called by grid.picture
.
Usage
grobify(object, ...)
oldGrobify(object, ...)
Arguments
object |
A |
... |
Arguments passed on to the relevant grid grob constructor function. |
Value
A grid gTree (when given a whole "Picture"
)
or an appropriate grid grob (when given a single picture path).
Author(s)
Paul Murrell
See Also
Draw a Picture Object
Description
This function take a "Picture"
object and draw it
in the current plot region.
Usage
picture(picture, xleft, ybottom, xright, ytop, ...)
Arguments
picture |
A |
xleft |
The location for the left edge of the picture. |
ybottom |
The location for the bottom edge of the picture. |
xright |
The location for the right edge of the picture. |
ytop |
The location for the top edge of the picture. |
... |
graphical parameters. |
Details
The positions supplied, i.e., xleft, ...
, are relative to the
current plotting region. If the x-axis goes from 100 to 200 then
xleft
should be larger than 100 and xright
should be
less than 200.
Author(s)
Paul Murrell
See Also
Draw Individual Picture Paths
Description
This function individually draws each path from a "Picture"
object.
Usage
picturePaths(picture, nr, nc,
col = "black",
fill = "light grey",
freeScales = FALSE,
xscale = NULL, yscale = NULL,
label = function(n) {
tg <- textGrob(n, x = 0, y = 0,
just = c("left", "bottom"),
gp = gpar(fontsize = 6))
grid.rect(x = 0, y = 0,
height = unit(6, "points"),
width = grobWidth(tg),
just = c("left", "bottom"),
gp = gpar(fill = "white"))
grid.draw(tg)
}, use.gc = TRUE)
Arguments
picture |
A |
nr |
Number of rows of paths to draw. |
nc |
Number of columns of paths to draw. |
col |
Colour of border drawn around each path. |
fill |
Background colour drawn behind each path. |
freeScales |
A boolean indicating whether each path should
be drawn on its own scale. If |
xscale |
A numeric vector of length two indicating the minimum and maximum on the x-scale. |
yscale |
A numeric vector of length two indicating the minimum and maximum on the y-scale. |
label |
Function to draw a label on each path. If any value other than a function is specified, no labels are drawn. |
use.gc |
A boolean indicating whether to use the graphical parameter information in the path. |
Author(s)
Paul Murrell
See Also
Import an RGML file
Description
This function reads in an RGML file (produced by
PostScriptTrace
) and creates a
"Picture"
object.
Usage
readPicture(rgmlFile, tidy = TRUE, ...)
Arguments
rgmlFile |
The name of the RGML file. |
tidy |
Boolean indicating whether to replace non-printing
characters in string values with a full stop. The default is
|
... |
Arguments that are passed to |
Value
An object of class "Picture"
.
Author(s)
Paul Murrell
See Also
Convert a Picture into a Grid Grob
Description
Converts an entire "Picture"
object, or
a path element thereof,
into an appropriate grid grob. Not usually called directly
by the user; usually called by grid.picture
.
Usage
symbolize(object, x = unit(0.5, "npc"), y = unit(0.5, "npc"),
size = unit(1, "npc"), units = "npc", ...)
Arguments
object |
A |
x |
A numeric vector or unit object specifying x-values. |
y |
A numeric vector or unit object specifying y-values. |
size |
A numeric vector or unit object specifying symbol size. |
units |
The default units to use if |
... |
Arguments passed on to the relevant grid grob constructor function. |
Value
A grid gTree (when given a whole "Picture"
)
or a "symbolFill"
or "symbolStroke"
object
(when given a single picture path).
Author(s)
Paul Murrell