从data.frame到ggplot2图例的表达式

时间:2011-06-08 20:03:55

标签: r plot ggplot2

我想在不直接输入图例的情况下向图例条目添加表达式(因为我循环变量)。基本上我想这样:

d <- data.frame(x=1:10,y=1:10,f=rep(c("0–74",">=75"),each=5))
qplot(x,y,data=d,color=f)   

输出这样做的方式:

qplot(x,y,data=d,color=f) +
scale_colour_manual(values=1:2,breaks=c("0–74",">=75"),
labels=c(expression(0<=75), expression("">=75)))

(但实际上我希望第一个条目0&lt; = 74为0-74,但我在混合表达式和非表达式时遇到了麻烦。)

我确定这是某种设置,但我尝试过的一切都没有用。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我认为你可以在循环中使用parse(text=)将字符串转换为适当的表达式。因此,您可以通过从f变量中获取字符串并使用类似的方式传递它们来设置scale_colour_manual适当的标签(可能需要进行一些调整):

scale_colour_manual(...,labels=c(parse(text=lab1),parse(text=lab2)))

虽然解析不喜欢">=75"所以你可能想要"''>=75"之类的内容。

例如:

qplot(x,y,data=d,color=f) +
  scale_colour_manual(values=1:2,breaks=c("0–74",">=75"),
  labels=c(parse(text="0-74"), parse(text=paste("''",">=75",sep=""))))