开发者

Greek letters in ggplot strip text

开发者 https://www.devze.com 2022-12-22 02:21 出处:网络
I\'m trying to override the text in some ggplot strips to incorporate Greek characters.Here\'s some sample data, and the base for the plot.

I'm trying to override the text in some ggplot strips to incorporate Greek characters. Here's some sample data, and the base for the plot.

dfr <- data.frame(
   x = rep(1:10, times = 6),
   y = runif(60),
   fx = rep(c("foo", "bar"), each = 30),
   fy = rep(c("alpha", "beta", "gamma"), each = 10, times = 2)
)

p <- ggplot(dfr, aes(x, y)) + geom_point()

My first attempt at a plot has no Greek in the strip labels.

 p + facet_grid(fy ~ fx)

I gather that I'm supposed to add a labeller argument to facet_grid to override the text. I presumed that this should spit out an expression to handle the greek characters, but my code just throws an error when the graphic is printed.

lbl <- function(variable, value)
{
   if(variable == "fy") parse(text=as.character(value)) else valu开发者_StackOverflowe
}
p + facet_grid(fy ~ fx, labeller = lbl)


Error in aperm(X, c(s.call, s.ans)) : 
  unimplemented type 'expression' in 'aperm'

How should I be creating the strip labels?


Try this:

p + facet_grid(fy ~ fx, labeller = label_parsed)


posting this here since it's related:

If you want the name of the variable itself as well as the levels/values of the variable to be evaluated as an expression (i.e. rendered as if they were latex), try this:

label_parseall <- function(variable, value) {
    plyr::llply(value, function(x) parse(text = paste(variable, 
        x, sep = "==")))
}

Example:

data <- data.frame(x = runif(10), y = runif(10), 
    gamma = sample(c("gamma[0]", "gamma[1]"), 10, rep = T))
ggplot(data, aes(x, y)) + geom_point() + facet_grid(~gamma, 
    labeller = label_parselabel) 

Greek letters in ggplot strip text

image at http://img709.imageshack.us/img709/1168/parseall.png

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号