Type: | Package |
Title: | Wrapper Functions for Producing Graphics |
Version: | 1.0.0 |
Author: | Richard Wen <rrwen.dev@gmail.com> |
Maintainer: | Richard Wen <rrwen.dev@gmail.com> |
Description: | A set of user-friendly wrapper functions for creating consistent graphics and diagrams with lines, common shapes, text, and page settings. Compatible with and based on the R 'grid' package. |
Imports: | grDevices, grid, tools |
License: | MIT + file LICENSE |
Encoding: | UTF-8 |
LazyData: | true |
RoxygenNote: | 6.0.1 |
URL: | https://github.com/rrwen/draw |
BugReports: | https://github.com/rrwen/draw/issues |
NeedsCompilation: | no |
Packaged: | 2018-07-24 22:07:42 UTC; Rich |
Repository: | CRAN |
Date/Publication: | 2018-07-30 11:10:06 UTC |
Draw a Box on the Page
Description
Draws a box on the page given positioning, dimensions and styling.
Usage
drawBox(x, y, width = .pkgenv$boxWidth, height = .pkgenv$boxHeight,
radius = .pkgenv$boxRadius, fillColor = .pkgenv$boxFillColor,
opacity = .pkgenv$boxOpacity, lineColor = .pkgenv$boxLineColor,
lineWidth = .pkgenv$boxLineWidth, lineType = .pkgenv$boxLineType,
units = .pkgenv$units, ...)
Arguments
x |
Numeric value for the x-axis position of the center. |
y |
Numeric value for the y-axis position of the center. |
width |
Numeric value for the width. |
height |
Numeric value for the height. |
radius |
Numeric value for the radius to create rounded box corners. |
fillColor |
Character value for the fill color. |
opacity |
Numeric value for the transparency with values ranging from 0 (transparent) to 1 (non-transparent). |
lineColor |
Character value for the color of the lines. |
lineWidth |
Numeric value for the width of the lines. |
lineType |
Character value for the line type. One of "blank", "solid", "dashed", "dotted", "dotdash", "longdash", or "twodash" (see "lty" in par). |
units |
Character value for the unit to use when specifying measurements. |
... |
Additional arguments passed to grid.rect. |
Value
See Also
Examples
library(draw)
# Set drawing settings
drawSettings(pageWidth = 5, pageHeight = 5, units = "inches")
# Create a new drawing page
drawPage()
# Draw a square
drawBox(x = 1, y = 4, width = 1, height = 1)
# Draw a square with rounded corners
drawBox(x = 4, y = 4, width = 1, height = 1, radius = 0.25)
# Draw a rectangle
drawBox(x = 1, y = 1, width = 1, height = 0.5)
# Draw a rectangle with rounded corners
drawBox(x = 4, y = 1, width = 1, height = 0.5, radius = 0.25)
# Export the drawing page to a PDF
drawExport("drawBox.pdf")
Draw a Circle on the Page
Description
Draws a circle on the page given positioning, dimensions and styling.
Usage
drawCircle(x, y, radius = .pkgenv$circleRadius,
fillColor = .pkgenv$circleFillColor, opacity = .pkgenv$circleOpacity,
lineColor = .pkgenv$circleLineColor, lineWidth = .pkgenv$circleLineWidth,
lineType = .pkgenv$circleLineType, units = .pkgenv$units, ...)
Arguments
x |
Numeric value for the x-axis position of the center. |
y |
Numeric value for the y-axis position of the center. |
radius |
Numeric value for radius of the circle. |
fillColor |
Character value for the fill color. |
opacity |
Numeric value for the transparency with values ranging from 0 (transparent) to 1 (non-transparent). |
lineColor |
Character value for the color of the lines. |
lineWidth |
Numeric value for the width of the lines. |
lineType |
Character value for the line type. One of "blank", "solid", "dashed", "dotted", "dotdash", "longdash", or "twodash" (see "lty" in par). |
units |
Character value for the unit to use when specifying measurements. |
... |
Additional arguments passed to grid.circle |
Value
A grid.circle grob object.
See Also
Examples
library(draw)
# Set drawing settings
drawSettings(pageWidth = 5, pageHeight = 5, units = "inches")
# Create a new drawing page
drawPage()
# Draw a small circle
drawCircle(x = 2.5, y = 2.5, radius = 0.5)
# Draw a mid sized circle
drawCircle(x = 2.5, y = 2.5, radius = 1)
# Draw a large circle
drawCircle(x = 2.5, y = 2.5, radius = 2)
# Export the drawing page to a PDF
drawExport("drawCircle.pdf")
Draw a Curve on the Page
Description
Draws a curve on the page given positioning, dimensions and styling.
Usage
drawCurve(x, y, curvature = .pkgenv$curveCurvature,
angle = .pkgenv$curveAngle, points = .pkgenv$curvePoints,
shape = .pkgenv$curveShape, square = .pkgenv$curveSquare,
squareShape = .pkgenv$curveSquareShape, opacity = .pkgenv$curveOpacity,
lineColor = .pkgenv$curveLineColor, lineWidth = .pkgenv$curveLineWidth,
lineType = .pkgenv$curveLineType, inflect = .pkgenv$curveInflect,
open = .pkgenv$curveOpen, arrowAngle = .pkgenv$arrowAngle,
arrowLength = .pkgenv$arrowLength, arrowUnits = .pkgenv$arrowUnits,
arrowEnds = .pkgenv$arrowEnds, arrowType = .pkgenv$arrowType,
units = .pkgenv$units, ...)
Arguments
x |
Numeric vector of length 2 for x-axis position of starting and ending points. |
y |
Numeric vector of length 2 for y-axis position of starting and ending points. |
curvature |
Numeric value for the curvature of the curve. Values of 0 create a straight line, negative values create left-hand curves, and positive values create right-hand curves. |
angle |
Numeric value of the curve control point skewness ranging from 0 to 180. Values less than 90 skew towards the start point, and values more than 90 skew towards the end point. |
points |
Numeric value for the number of curve control points with higher numbers creating a smoother curve. |
shape |
Numeric value for the shape of the curve ranging from -1 to 1 (See grid.xspline). |
square |
Logical value indicating whether curve control points are created in a city-block or oblique way. It is recommended to set this to TRUE if points is 1 and angle is 90, and FALSE otherwise (see grid.curve). |
squareShape |
Numeric value controlling curve behaviours relative to control points. Applies if square is TRUE. |
opacity |
Numeric value for the transparency with values ranging from 0 (transparent) to 1 (non-transparent). |
lineColor |
Character value for the color of the lines. |
lineWidth |
Numeric value for the width of the lines. |
lineType |
Character value for the line type. One of "blank", "solid", "dashed", "dotted", "dotdash", "longdash", or "twodash" (see "lty" in par). |
inflect |
Logical value indicating if the curve should be cut in half and inverted (TRUE) or not (FALSE). |
open |
Logical value indicating whether to open the curve (TRUE) or close the curve (FALSE). |
arrowAngle |
Numeric value of the angle for arrows. Smaller numbers create narrower arrows, and larger numbers produce wider arrows. |
arrowLength |
Numeric value of the length for arrows. |
arrowUnits |
Character value of the measurement unit for arrows. |
arrowEnds |
Character value indicating which end to draw arrows on lines. Must be one of "last", "first" or "both". |
arrowType |
Character value indicating if the arrow heads should be closed or open. Must be one of "open" or "closed". |
units |
Character value for the unit to use when specifying measurements. |
... |
Additional arguments passed to grid.curve. |
Value
A grid.curve grob object.
See Also
Examples
library(draw)
# Set drawing settings
drawSettings(pageWidth = 5, pageHeight = 5, units = "inches")
# Create a new drawing page
drawPage()
# Draw a curved angle
drawCurve(x = c(1, 4),
y = c(1, 2),
angle = 90)
# Draw a curved angle with arrows
drawCurve(x = c(1, 4),
y = c(2, 3.75),
angle = 90, arrowLength = 0.1, arrowEnd = "both")
# Draw an inflected curve
drawCurve(x = c(1, 4),
y = c(3, 4),
angle = 90, inflect = TRUE)
# Export the drawing page to a PDF
drawExport("drawCurve.pdf")
Export Current Drawing Page to a File
Description
Export Current Drawing Page to a File
Usage
drawExport(f, width = .pkgenv$pageWidth, height = .pkgenv$pageHeight,
ppi = .pkgenv$exportPPI, format = tools::file_ext(f),
textSize = .pkgenv$textSize, units = .pkgenv$exportUnits, ...)
Arguments
f |
Character value of the file path to save to. Must include file name and extension. |
width |
Numeric value of the image width. |
height |
Numeric value of the image height. |
ppi |
Numeric value of the image resolution quality in Pixels Per Inch (PPI). |
format |
Character value of the extension for file without a period ".". |
textSize |
Size of text (pt) in image. |
units |
Character value for the unit to use when specifying measurements. Can be one of the following:
|
... |
Additional arguments passed to dev.copy. |
Value
The name and number of the device, according to dev.copy, which has been copied to.
See Also
Examples
library(draw)
# Set drawing settings
drawSettings(pageWidth = 5, pageHeight = 5, units = "inches")
# Create a new drawing page
drawPage()
# Draw a square
drawBox(x = 1, y = 4, width = 2, height = 2)
# Export the drawing page to a PDF
drawExport("export.pdf")
# Export the drawing page to a PNG
drawExport("export.png", ppi=300)
Draw a Line on the Page
Description
Draws a line on the page given positioning, dimensions and styling.
Usage
drawLine(x, y, opacity = .pkgenv$lineOpacity, lineColor = .pkgenv$lineColor,
lineWidth = .pkgenv$lineWidth, lineType = .pkgenv$lineType,
arrowAngle = .pkgenv$arrowAngle, arrowLength = .pkgenv$arrowLength,
arrowUnits = .pkgenv$arrowUnits, arrowEnds = .pkgenv$arrowEnds,
arrowType = .pkgenv$arrowType, units = .pkgenv$units, ...)
Arguments
x |
Numeric vector for the x-axis positions of the control points. |
y |
Numeric vector for the y-axis positions of the control points. |
opacity |
Numeric value for the transparency with values ranging from 0 (transparent) to 1 (non-transparent). |
lineColor |
Character value for the color of the lines. |
lineWidth |
Numeric value for the width of the lines. |
lineType |
Character value for the line type. One of "blank", "solid", "dashed", "dotted", "dotdash", "longdash", or "twodash" (see "lty" in par). |
arrowAngle |
Numeric value of the angle for arrows. Smaller numbers create narrower arrows, and larger numbers produce wider arrows. |
arrowLength |
Numeric value of the length for arrows. |
arrowUnits |
Character value of the measurement unit for arrows. |
arrowEnds |
Character value indicating which end to draw arrows on lines. Must be one of "last", "first" or "both". |
arrowType |
Character value indicating if the arrow heads should be closed or open. Must be one of "open" or "closed". |
units |
Character value for the unit to use when specifying measurements. |
... |
Additional arguments passed to grid.lines. |
Value
A grid.lines grob object.
See Also
Examples
library(draw)
# Set drawing settings
drawSettings(pageWidth = 5, pageHeight = 5, units = "inches")
# Create a new drawing page
drawPage()
# Draw a solid line
drawLine(x = c(1, 4),
y = c(1 ,1))
# Draw a dashed line
drawLine(x = c(1, 4),
y = c(2 ,2),
lineType = "dashed")
# Draw a dotted line with ending arrow
drawLine(x = c(1, 4),
y = c(3 ,3),
lineType = "dotted", arrowEnds = "last")
# Draw thick two dash line with starting arrow
drawLine(x = c(1, 4),
y = c(4, 4),
lineWidth = 3, lineType = "twodash", arrowEnds = "first")
# Export the drawing page to a PDF
drawExport("drawLine.pdf")
Create a New Drawing Page
Description
Create a New Drawing Page
Usage
drawPage(width = .pkgenv$pageWidth, height = .pkgenv$pageHeight,
units = .pkgenv$units, ...)
Arguments
width |
Numeric value for the page width. |
height |
Numeric value for the page height. |
units |
Character value for the unit to use when specifying measurements. |
... |
Additional arguments to viewport. |
Value
A viewport object.
See Also
Examples
library(draw)
# Set drawing settings
drawSettings(pageWidth = 5, pageHeight = 5, units = "inches")
# Create a new drawing page
drawPage()
Draw a Point on the Page
Description
Draws a point on the page given positioning, dimensions and styling.
Usage
drawPoint(x, y, pch = .pkgenv$pointPCH, size = .pkgenv$pointSize,
fillColor = .pkgenv$pointFillColor, opacity = .pkgenv$pointOpacity,
lineColor = .pkgenv$pointLineColor, lineWidth = .pkgenv$pointLineWidth,
lineType = .pkgenv$pointLineType, units = .pkgenv$units, ...)
Arguments
x |
Numeric value for the x-axis position of the center. |
y |
Numeric value for the y-axis position of the center. |
pch |
Numeric value indicating which plotting symbol to use (see points). Some examples include 0 for square, 1 for circle, 2 for triangle, and 4 for X. |
size |
Numeric value for the size of the point. |
fillColor |
Character value for the fill color. |
opacity |
Numeric value for the transparency with values ranging from 0 (transparent) to 1 (non-transparent). |
lineColor |
Character value for the color of the lines. |
lineWidth |
Numeric value for the width of the lines. |
lineType |
Character value for the line type. One of "blank", "solid", "dashed", "dotted", "dotdash", "longdash", or "twodash" (see "lty" in par). |
units |
Character value for the unit to use when specifying measurements. |
... |
Additional arguments passed to grid.points. |
Value
A grid.points grob object.
See Also
Examples
library(draw)
# Set drawing settings
drawSettings(pageWidth = 5, pageHeight = 5, units = "inches")
# Create a new drawing page
drawPage()
# Draw a square point
drawPoint(x = 1, y = 4, pch = 0)
# Draw a larger circle point
drawPoint(x = 4, y = 4, pch = 1, size = 1.5)
# Draw a triangle point
drawPoint(x = 1, y = 1, pch = 2, lineWidth = 2)
# Draw a red X point
drawPoint(x = 4, y = 1, pch = 4, lineColor = "red")
# Export the drawing page to a PDF
drawExport("drawPoint.pdf")
Modify Default Drawing Settings
Description
Modify Default Drawing Settings
Usage
drawSettings(...)
Arguments
... |
Default settings to modify draw package settings stored in an environment. |
Details
The following parameters are available to change:
*
-
units [default = "inches"]: Character value of default measurement unit for applicable draw function parameters (such as width, height, radius, x, y, etc).
-
arrowAngle [default = 30]: Numeric value of the angle for arrows. Smaller numbers create narrower arrows, and larger numbers produce wider arrows.
-
arrowLength [default = 0]: Numeric value of the length for arrows.
-
arrowUnits [default = units]: Character value of the measurement unit for arrows. Default is the same as units parameter under *.
-
arrowEnds [default = "last"]: Character value indicating which end to draw arrows on lines. Must be one of "last", "first" or "both".
-
arrowType [default = "open"]: Character value indicating if the arrow heads should be closed or open. Must be one of "open" or "closed".
-
boxWidth [default = 1]: Numeric value of the width for boxes.
-
boxHeight [default = 1]: Numeric value of the height for boxes.
-
boxRadius [default = 0]: Numeric value of the radius for boxes to create rounded corners.
-
boxFillColor [default = "transparent"]: Character value of the color to fill boxes with.
-
boxOpacity [default = 1]: Numeric value of transparency for boxes ranging from 0 (transparent) to 1 (non-transparent).
-
boxLineWidth [default = 1]: Numeric value of the width for the box lines.
-
boxLineType [default = "solid"]: Character value of the type of line for the boxes. One of "blank", "solid", "dashed", "dotted", "dotdash", "longdash", or "twodash" (see "lty" in par).
-
boxLineColor [default = "black"]: Character value of the color for the box lines.
-
circleRadius [default = 0.5]: Numeric value of the radius for circles.
-
circleFillColor [default = "transparent"]: Character value of the color to fill circles with.
-
circleOpacity [default = 1]: Numeric value of the transparency for circles ranging from 0 (transparent) to 1 (non-transparent).
-
circleLineWidth [default = 1]: Numeric value of the width for the circle lines.
-
circleLineType [default = "solid"]: Character value of the type of line for the circles. One of "blank", "solid", "dashed", "dotted", "dotdash", "longdash", or "twodash" (see "lty" in par).
-
circleLineColor [default = "black"]: Character value of the color for the circle lines.
-
curveCurvature [default = 1]: Numeric value of the curvature for the curves. Values of 0 create a straight line, negative values create left-hand curves, and positive values create right-hand curves.
-
curveAngle [default = 90]: Numeric value of the curve control point skewness ranging from 0 to 180. Values less than 90 skew towards the start point, and values more than 90 skew towards the end point.
-
curvePoints [default = 1]: Numeric value of the number of control points for the curves, where higher values create smoother curves.
-
curveShape [default = 0.5]: Numeric value of the shape for the curves ranging from -1 to 1 (See grid.xspline).
-
curveSquare [default = TRUE]: Logical value indicating whether curve control points are created in a city-block or oblique way. It is recommended to set this to TRUE if curvePoints is 1 and curveAngle is 90, and FALSE otherwise (see grid.curve).
-
curveSquareShape [default = 1]: Numeric value controlling curve behaviours relative to control points. Applies if curveSquare is TRUE.
-
curveOpacity [default = 1]: Numeric value of the transparency for the curves ranging from 0 (transparent) to 1 (non-transparent).
-
curveLineColor [default = "black"]: Character value of the color for the curve lines.
-
curveLineWidth [default = 1]: Character value of the width for the curve lines.
-
curveLineType [default = "solid"]: Character value of the type of line for the curves. One of "blank", "solid", "dashed", "dotted", "dotdash", "longdash", or "twodash" (see "lty" in par).
-
curveInflect [default = FALSE]: Logical value indicating if curve should be cut in half and inverted (TRUE) or not (FALSE).
-
curveOpen [default = TRUE]: Logical value indicating whether to open the curves (TRUE) or close the curves (FALSE).
-
exportUnits [default = units]: Character value of measurement unit for exporting. Default is the same as units parameter under *.
-
exportPPI [default = 150]: Numeric value of the image quality measured in Pixels Per Inch (PPI).
-
lineOpacity [default = 1]: Numeric value of the transparency of the lines ranging from 0 (transparent) to 1 (non-transparent).
-
lineWidth [default = 1]: Numeric value of the width of the lines.
-
lineType [default = "solid"]: Character value of the type for the lines. One of "blank", "solid", "dashed", "dotted", "dotdash", "longdash", or "twodash" (see "lty" in par).
-
lineColor [default = "black"]: Character value of the color of the lines.
-
pageWidth [default = 8.5]: Numeric value of the width of the drawing page.
-
pageHeight [default = 11]: Numeric value of the height of the drawing page.
-
pointPCH [default = 20]: Numeric value indicating which plotting symbol to use (see points). Some examples include 0 for square, 1 for circle, 2 for triangle, and 4 for X.
-
pointSize [default = 1]: Numeric value of the point size.
-
pointFillColor [default = "transparent"]: Character value of the color to fill each point.
-
pointOpacity [default = 1]: Numeric value of the transparency for the points ranging from 0 (transparent) to 1 (non-transparent).
-
pointLineColor [default = "black"]: Character value of the color of the points.
-
pointLineType [default = "solid"]: Character value of the type for the lines. One of "blank", "solid", "dashed", "dotted", "dotdash", "longdash", or "twodash" (see "lty" in par).
-
pointLineWidth [default = 1]: Numeric value of the width of the point lines.
-
text [default = "text"]: Character value of the text to display at the defined position.
-
textJust [default = "centre"]: Character value of the text justification. One of "left", "right", "centre", "center", "bottom", or "top".
-
textHjust [default = NULL]: Numeric value of the horizontal justification.
-
textVjust [default = NULL]: Numeric value of the vertical justification.
-
textAngle [default = 0]: Numeric value of the angle to rotate text.
-
textOverlap [default = FALSE]: Logical value indicating if overlapping text should be removed (TRUE) or not (FALSE).
-
textOpacity [default = 1]: Numeric value of the transparency for text ranging from 0 (transparent) to 1 (non-transparent).
-
textColor [default = "black"]: Character value of the color for text.
-
textSize [default = 12]: Numeric value of the text font size in pt.
-
textFace [default = "plain"]: Character value of the text font face. One of "plain", "bold", "italic", "oblique", and "bold.italic" (see fontface in gpar).
-
textFamily [default = "sans"]: Character value of text font family to use (see family in par). Common values are "serif", "sans" and "mono".
-
textLineHeight [default = 1.2]: Numeric value of text line height as a multiple of the size of the text.
Value
A list of the current draw settings with changes.
Examples
library(draw)
# Set page dimensions and units to inches
drawSettings(pageWidth = 5, pageHeight = 5, units = "inches")
# Set export resolution in Pixels Per Inch (PPI)
drawSettings(exportPPI = 300)
# Set default width and height for all boxes in inches
drawSettings(boxWidth = 1, boxHeight = 1)
# Create a new drawing page
drawPage()
# Draw default 1 by 1 inch boxes near the center
drawBox(x = 2, y = 2.5)
drawBox(x = 3, y = 2.5)
# Draw a non-default 2 by 2 inch box in the center
drawBox(x = 2.5, y = 2.5, width = 2, height = 2)
# Export the current drawing page
drawExport("drawSettingsExample.pdf")
Draw Text on the Page
Description
Draws text on the page given positioning, dimensions and styling.
Usage
drawText(x, y, text = .pkgenv$text, just = .pkgenv$textJust,
hjust = .pkgenv$textHjust, vjust = .pkgenv$textVjust,
angle = .pkgenv$textAngle, overlap = .pkgenv$textOverlap,
opacity = .pkgenv$textOpacity, color = .pkgenv$textColor,
size = .pkgenv$textSize, face = .pkgenv$textFace,
family = .pkgenv$textFamily, lineHeight = .pkgenv$textLineHeight,
units = .pkgenv$units, ...)
Arguments
x |
Numeric value for the x-axis position of the center. |
y |
Numeric value for the y-axis position of the center. |
text |
Character value of the text to display at xy position. |
just |
Character value of the text justification. One of "left", "right", "centre", "center", "bottom", or "top". |
hjust |
Numeric value of the horizontal justification. |
vjust |
Numeric value of the vertical justification. |
angle |
Numeric value of the angle to rotate text. |
overlap |
Logical value indicating if overlapping text should be removed (TRUE) or not (FALSE). |
opacity |
Numeric value of the transparency for text ranging from 0 (transparent) to 1 (non-transparent). |
color |
Character value of the color for text. |
size |
Numeric value of the text font size in pt. |
face |
Character value of the text font face. One of "plain", "bold", "italic", "oblique", and "bold.italic" (see fontface in gpar). |
family |
Character value of text font family to use (see family in par). Common values are "serif", "sans" and "mono". |
lineHeight |
Numeric value of text line height as a multiple of the size of the text. |
units |
Character value for the unit to use when specifying measurements. |
... |
Additional arguments passed to grid.text. |
Value
See Also
Examples
library(draw)
# Set drawing settings
drawSettings(pageWidth = 5, pageHeight = 5, units = "inches")
# Create a new drawing page
drawPage()
# Draw text on top left corner
drawText(x = 1, y = 4, text = "Top Left")
# Draw bold text on top right corner
drawText(x = 4, y = 4, text = "Top Right", face = "bold")
# Draw serif text on bottom left corner
drawText(x = 1, y = 1, text = "Bottom Left", family = "serif")
# Draw larger text on bottom right corner
drawText(x = 4, y = 1, text = "Bottom Right", size = 14)
# Export the drawing page to a PDF
drawExport("drawText.pdf")