gpt4 book ai didi

r - 如何使用网格编辑 ggplot2 对象以将数学表达式添加到构面标签?

转载 作者:行者123 更新时间:2023-12-03 19:29:02 26 4
gpt4 key购买 nike

我需要在 ggplot2 中使用 facet_wrap() 将希腊字母放入刻面标签中。我找到了一个 Link对 facet_grid() 描述相同。我使用以下代码将其应用于我的数据:

levels(parameters) <- c(expression(alpha), expression(beta))  
p + facet_grid(.~parameters, labeller = label_parsed)

这很好用,并且完全符合我的要求。但是,我需要使用 facet_wrap() 代替(为两个参数获取单独的 y 轴,并在不同的列和行中绘制更多参数)。我尝试了以下方法:
p + facet_wrap(.~parameters, labeller = label_parsed)  ,  or  
p + facet_wrap(.~parameters)

但这不起作用,因为 facet_wrap 中没有“labeller”功能。这如何使用网格来完成?

最佳答案

这个例子应该让你开始:

library("ggplot2")
library("grid")

d <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point() +
facet_wrap(~Species)
grob <- ggplotGrob(d)
strip_elem <- grid.ls(getGrob(grob, "strip.text.x", grep=TRUE, global=TRUE))$name

grob <- grid::editGrob(grob, strip_elem[1], label=expression(alpha[1]))
grob <- grid::editGrob(grob, strip_elem[2], label=expression(beta^2))
grob <- grid::editGrob(grob, strip_elem[3], label=expression(hat(gamma)))

grid.draw(grob)

modified grob

更新:这适用于 ggplot2版本 0.9.3(虽然使用 grid 是修改 ggplot2 图形的脆弱方式)
grob[["grobs"]][["strip_t.1"]][["children"]][[2]][["label"]] <- expression(alpha[1])
grob[["grobs"]][["strip_t.2"]][["children"]][[2]][["label"]] <- expression(beta^2)
grob[["grobs"]][["strip_t.3"]][["children"]][[2]][["label"]] <- expression(hat(gamma))
grid.draw(grob)

关于r - 如何使用网格编辑 ggplot2 对象以将数学表达式添加到构面标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6525857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com