I’ve been working on a home-brewed version of the plot function in the package 
qcc that would be more compatible with grid graphics. I’d like to share this 
with the R community, in the hopes that this reference helps some of my fellow 
learners. The issues that I overcame were all documented elsewhere, but not 
always easy to find; hopefully this helps with the search engines.

I have written a replacement for the plot.qcc() function in the qcc package. 
Features that may be of interest:

* The new plot function generates graphs almost identical to the original base 
graphic versions, but using ggplot2, gtable and grid. Some of the differences 
in programming technique are documented (e.g. the need to pass data frames 
rather than individual vectors to ggplot). Several issues were overcome, 
including the search scope of aes() and the use of aes_string() versus aes(), 
especially when using ggplot within a function.

* The new function replaces plot.qcc() in the qcc namespace, so that after 
calling source() with my code, all calls to plot() with a qcc object draw the 
new ggplot2-based version. The code demonstrates how to unbind an existing 
function and bind a new function in its place within the package namespace 
using the following code:

unlockBinding(sym="plot.qcc", env=getNamespace("qcc"));
assignInNamespace(x="plot.qcc", value=plot.qcc, ns=asNamespace("qcc"), 
envir=getNamespace("qcc"));
assign("plot.qcc", plot.qcc, envir=getNamespace("qcc"));
lockBinding(sym="plot.qcc", env=getNamespace("qcc"));

* Finally, the code shows how to annotate a plot outside the data panel, when 
the labels need to be aligned with the data (e.g. plot a reference line with 
geom_hline() and then annotate a label for the line to the right of the plot).

This implementation might not be the most elegant or bug-free, but it has 
passed my testing so far.

The code is available on Github at https://github.com/tomhopper/gcc_ggplot/

Best Regards,

Tom Hopper

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to