从 data.frame 到 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<=74 为 0-74,但我在混合表达式和非表达式时遇到了麻烦。
)当然这是某种设置,但我尝试过的一切都不起作用。有什么想法吗?
I would like to add an expression to a legend entry without entering the legend directly (since I am looping over variables). Essentially I would like this:
d <- data.frame(x=1:10,y=1:10,f=rep(c("0–74",">=75"),each=5))
qplot(x,y,data=d,color=f)
to output the way this does:
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)))
(But actually I would like the the first entry 0<=74 to be 0-74, but I'm having trouble mixing expressions and non-expressions.)
I'm sure it's some kind of setting, but everything I've tried hasn't worked. Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为您可以在循环中使用
parse(text=)
将字符串转换为适当的表达式来执行此操作。因此,您可以通过从 f 变量中获取字符串并以类似这样的方式传递它们(可能需要进行一些调整)来使用适当的标签设置scale_colour_manual
:虽然 parse 不喜欢
">=75"
因此您可能需要类似"''>=75"
的内容。例如:
I think you can do this within your loop by using
parse(text=)
to convert a string to the appropriate expression. So you could setscale_colour_manual
with the appropriate labels by taking the character strings from your f variable and passing them in a manner something like this (some tweaking may be necessary):Although parse doesn't like
">=75"
so you'll probably want something like"''>=75"
.For example: