gpt4 book ai didi

r - R 中的 Facet_Wrap 标签

转载 作者:行者123 更新时间:2023-12-03 14:03:24 28 4
gpt4 key购买 nike

我正在尝试使用 facet 更改 ggplot 图的标签,并且正在使用数据帧中未分面的变量。代码如下-

iris %>%
group_by(Species) %>%
summarise(lbl = mean(Petal.Length)) %>%
select(lbl) %>%
unlist() -> lbls
lbls <- map2(unique(iris$Species), lbls, paste, sep = "\n")
iris %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width, group = 1)) +
geom_point() +
facet_wrap(~ Species, labeller = lbls)

但是,这给了我以下错误-
Error in cbind(labels = list(), list(`{`, if (!is.null(.rows) || 
!is.null(.cols)) { :
number of rows of matrices must match (see arg 2)

我已经查看了 labeller 函数和不同的选项,但其中大多数似乎是针对包含在 facet 中的变量。有没有办法做到这一点?任何线索表示赞赏,谢谢!

最佳答案

来自 ?labeller 上的文档, labeller也可以是命名的字符向量。请注意,我们需要将字符向量包裹在 labeller 中功能。同样从帮助文件中的示例来看,我们需要传递facetting变量Species作为 labeller 的参数.因此调用应该类似于:
labeller = labeller(Species = setNames(unlist(lbls), unique(iris$Species)))
代码应该是:

iris %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width, group = 1)) +
geom_point() +
facet_wrap(~ Species, labeller = labeller(Species = setNames(unlist(lbls), unique(iris$Species))))

此外,更简洁的创建标签的方式是不使用 map2 :
lbls <- setNames(paste(unique(iris$Species), lbls, sep = "\n"), unique(iris$Species))
enter image description here

关于r - R 中的 Facet_Wrap 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49496586/

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