Learn R Programming

cooltools (version 2.4)

makeframe: Display a single movie frame

Description

Displays a single movie-frame in the R-console, exactly as used in a movie generated with makemovie.

Usage

makeframe(
  frame.draw,
  frame.index,
  width = 1080,
  height = 720,
  cex = 1,
  oversampling = 1,
  pngfile = NULL
)

Value

Returns the displayed image as n-by-my-by 4 array, representing the 4 RGBA channels of height n and width m.

Arguments

frame.draw

function that plots an individual frame. This function must have exactly one argument 'x', which can be integer (e.g. a simple frame index) or real (e.g. a time).

frame.index

list of frame indices 'x' to be included in the movie

width

integer number of pixels along the horizontal axis

height

integer number of pixels along the vertical axis

cex

number defining the overall scaling of line widths, font sizes, etc.

oversampling

integer specifying the oversampling factor along both dimensions. If larger than 1, frames are plotted with (width*oversampling)-by-(height*oversampling) pixels and then resized back to width-by-height. This can be used to make line objects and text move more smoothly.

pngfile

optional path+filename of output file to save the image. R must have write access to this file.

Author

Danail Obreschkow

See Also

makemovie

Examples

Run this code

## Example: Movie of a manual clock

# Function to draw a single clock face with two hands
frame = function(time) {
  oldpar = graphics::par(mar=c(0,0,0,0))
  nplot(xlim=c(-1.1,1.1),ylim=c(-1.1,1.1),pty='s')
  plotrix::draw.circle(0,0,1,col='#aaaaff')
  radius = c(0.5,0.9)
  speed = 2*pi/c(720,60)
  lwd = c(4,2)
  graphics::arrows(0,0,radius*sin(speed*time),radius*cos(speed*time),lwd=lwd)
  graphics::par(oldpar)
}

# Produce movie
if (FALSE) {
makeframe(frame,15,200,200)
}

Run the code above in your browser using DataLab