as_labeller,带有ggplot2和facet_wrap中的表达式

时间:2016-05-27 15:35:18

标签: r ggplot2

有一个示例here,但我无法使其正常工作。这是我的用例:

df <- as.data.frame(matrix(runif(9),8,8))
angles <- c(0.112, 2.633, 3.766, 5.687, 0.867, 7.978, 8.937, 4.652)
df$factor <- as.factor(angles)
df.m <- melt(df)
ggplot(df.m, aes(variable, value)) +
  geom_boxplot() +
  facet_wrap(~factor)

enter image description here

现在我想用度数符号显示圆角。所以我尝试了这个

new.labs <- as_labeller(paste(round(as.numeric(angles)), "degree"), label_parsed)
ggplot(df.m, aes(variable, value)) +
  geom_boxplot() +
  facet_wrap(~factor, labeller=new.labs)   

但它会产生空字符串。

2 个答案:

答案 0 :(得分:1)

我相信as.labeller期待一个函数或一个查找表,而不是一个变量名。

new.labs <- as_labeller(function(string) paste(round(as.numeric(string)), "*degree"), label_parsed)

ggplot(df.m, aes(variable, value)) +
    geom_boxplot() +
    facet_wrap(~factor, labeller = new.labs) 

enter image description here

答案 1 :(得分:1)

不使用as.labeller,但这很简单:

df <- as.data.frame(matrix(runif(9),8,8))
angles <- c(0.112, 2.633, 3.766, 5.687, 0.867, 7.978, 8.937, 4.652)
df$factor <- as.factor(round(angles))
df.m <- melt(df)

ggplot(df.m, aes(variable, value)) +
    geom_boxplot() +
    facet_wrap(~factor, labeller = label_bquote(.(as.character(factor))*degree))