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

发布于 2024-11-14 10:08:26 字数 459 浏览 2 评论 0原文

我想向图例条目添加一个表达式,而不直接输入图例(因为我正在循环变量)。本质上我希望这样:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

今天小雨转甜 2024-11-21 10:08:26

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

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

虽然 parse 不喜欢 ">=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=""))))

I think you can do this within your loop by using parse(text=) to convert a string to the appropriate expression. So you could set scale_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):

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

Although parse doesn't like ">=75" so you'll probably want something like "''>=75".

For example:

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=""))))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文