Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
This is the last update to this strange saga… I hope.
Easily two of the most popular posts on my blog are this one and this one describing a couple of ways in which I managed to hack together using an image as a category label in a ggplot.
There are likely many people who believe one should never do such a thing, but given the popularity, it seems a lot of people aren’t listening to that. Good on you.
One of these posts was recently shared again by the amazing #rstats amplifier Mara Averick (if you’re not following her on Twitter, you’re missing out) and @baptiste_auguie (the saviour of the previous implementation) mentioned that he had written a ‘hack’ to get chemical symbols as a categorical axis label using tikzDevice
. That package leverages
The example code is straightforward enough
options(tikzLatexPackages = c(getOption('tikzLatexPackages'),"\\usepackage{acide-amine}\n")) d = data.frame(x=1:10, y=1:10, f=factor(sample(letters[1:2], 10, repl=TRUE))) p <- qplot(x,y,data=d) + theme_bw() + opts(plot.margin = unit(c(1, 1, 5, 1), "lines"), axis.text.x = theme_text(size = 12 * 0.8, lineheight = 0.9, vjust = 10)) + scale_x_continuous(breaks = c(2, 8), labels=c("\\phe{15}", "\\leu{15}")) tikz("annotation.tex",standAlone=T,width=4,height=4) print(p) dev.off()
and produces this
This got me curious, though — if it can process arbitrary \\includegraphics
call?
Efficient! If it's arbitrary LaTeX, could the labels just be \includegraphics calls?
— Jonathan Carroll (@carroll_jono) October 11, 2018
Yes, as it turns out.
A quick test showed that it was indeed possible, which only leaves re-implementing the previous posts’ images using this method.
I’ve done so, and the code isn’t particularly shorter than the other method.
404: Not Found
Producing nearly the same end result.
There are a few differences compared to the previous version(s):
– I had a request for rotating the additional text, which I actually also updated recently, and it seemed to fit better, so I rotated the labels within the
– Since all of the text has been rendered via
– The rankings have since changed, so I’ve added an 11th to keep Australia in the list.
The tikz
command is that a .tex
(.tex
file with tools::texi2dvi
function, but one could also use a system
command to their
That still only produced a PDF. The last step was to use the magick
package to convert this into an image.
Overall, this is a nice proof of concept, but I don’t think it’s a particularly tidy way of achieving the goal of image axis labels. It does however lay the groundwork for anyone else who decides this might be a useful route to take. Plus I learned a bit more about how tikzDevice
works and got to revisit my
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.