# Plotting graphs with tkrplot

The following example shows how to plot a graph in a Tk window, using the tkrplot package.

library(tcltk2)
library(tkrplot)

hscale <- 1.5    # Horizontal scaling
vscale <- 1.5    # Vertical scaling

plotTk <- function() {
x <- -100:100
y <- x^2
plot(x, y, main = "A parabola")
}

win1 <- tktoplevel()
tktitle(win1) <- "A parabola"

win1$env$plot <- tkrplot(win1, fun = plotTk,
hscale = hscale, vscale = vscale)
tkgrid(win1$env$plot)

The code listed above gives the following graph window:

It is worth noting that tkrplot places the graph on the clipboard (in Windows or X11) before it plots it on the window. This means that once a graph has been plotted, it can easily be pasted into another program. However, if a second graph is plotted, the first graph will be lost from the clipboard, so the software developer may wish to include a Copy to Clipboard button or menu item on the tkrplot graph window, so that the user can come back to it later and copy it to the clipboard. This can be done using the tkrreplot() function as follows:

library(tcltk2)
library(tkrplot)

hscale <- 1.5    # Horizontal scaling
vscale <- 1.5    # Vertical scaling

plotTk <- function() {
x <- -100:100
y <- x^2
plot(x, y, main = "A parabola")
}

win2 <- tktoplevel()
tktitle(win2) <- "A parabola"

win2$env$plot <- tkrplot(win2, fun = plotTk,
hscale = hscale, vscale = vscale)

copyToClipboard <- function() tkrreplot(win2$env$plot)
win2$env$butCopy <- tk2button(win2, text = "Copy to Clipboard",
command = copyToClipboard)
tkgrid(win2$env$butCopy, padx = 10, pady = 5, sticky = "nw")
tkgrid(win2$env$plot)

The code listed above gives the following graph window: