Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set default graphical parameters for device

Tags:

r

graphics

I often prefer to use a light text on dark background colortheme in IDEs. When I plot something in R the default colorscheme for plots is black text/borders/points on white background. I was trying to change this by default, preferably for specific devices called from R by default (X11cairo, RStudioGD), while keeping the normal defaults for 'output' devices such as pdf and png.

My question is twofold: (1) How can I set default graphical parameters? and (2) Can I do this only for particular devices?

For example, I can easilly set the colorscheme in the current device with par:

par(
  bg = "black",
  col = "white",
  col.axis = "white",
  col.lab = "white",
  col.main = "white",
  col.sub = "white")

plot(1)

Creates the white on black plot as expected, and as expected resetting the device returns to defaults:

dev.off()
plot(1)

I tried putting the following in my .Rprofile:

graphics:::par(
  bg = "black",
  col = "white",
  col.axis = "white",
  col.lab = "white",
  col.main = "white",
  col.sub = "white")
graphics:::plot(1,type="n",xlab="",ylab="",axes=FALSE)
graphics:::text(1,1,"Plotting area")

Which works somewhat, except that it opens a plot window on startup which can be abit annoying and in RStudio it doesn't open the RStudio device but an x11 window. Also if I close that window the parameters reset again. I would prefer to be able to have this "colorscheme" used by default every time I open a plotting window with in for example RStudio's default device.

like image 974
Sacha Epskamp Avatar asked Nov 20 '12 13:11

Sacha Epskamp


People also ask

How do you set graphical parameters in R?

The format is par(optionname=value, optionname=value, ...) A second way to specify graphical parameters is by providing the optionname=value pairs directly to a high level plotting function. In this case, the options are only in effect for that specific graph.

Which function is used to query and edit graphical settings in R?

Explanation: par() is used to query and edit graphical settings.

What does the par function do in R?

The par() function is used to set or query graphical parameters. We can divide the frame into the desired grid, add a margin to the plot or change the background color of the frame by using the par() function. We can use the par() function in R to create multiple plots at once.

What does Dev off do in R?

dev. off shuts down the specified (by default the current) device. If the current device is shut down and any other devices are open, the next open device is made current.


1 Answers

Graphics parameters last for the life of the device, that is why you see them reset when you close the graphics device and start a new plot.

Probably the best approach for what you want to do is to write a wrapper function for the devices that you want to change the defaults on. This function would start the device of interest and set the default parameters for you. You can then set your function as the default device using options(device=mygrdevice) where mygrdevice is the custom function. Then if no device is open and you issue a plotting command your function will run, open the device and set the defaults. But if you open a different device such as pdf or png then the regular defaults will be in place.

You could also use setHook to set a hook function to run when plotting, but checking on which device is current would probably be more work than it is worth. If a hook is available for when a plotting device starts, that might be a better option.

like image 89
Greg Snow Avatar answered Sep 29 '22 07:09

Greg Snow