gpt4 book ai didi

r - 如何在ggplot中引用管道对象?

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

我正在尝试这个代码:

iris %>% 
mutate(Sepal.Length = Sepal.Length*100) %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width, fill = Sepal.Length))+
geom_col()+
scale_fill_gradient2(low = "yellow", high = "green", mid = "red", midpoint = median(.$Sepal.Length))

这个问题的重点在 midpoint部分。当我运行这个时,我收到错误:
Error in median(.$Sepal.Length) : object '.' not found

我也试过:
iris %>% 
mutate(Sepal.Length = Sepal.Length*100) %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width, fill = Sepal.Length))+
geom_col()+
scale_fill_gradient2(low = "yellow", high = "green", mid = "red", midpoint = median(Sepal.Length))

我得到了一个类似的错误:
Error in median(Sepal.Length) : object 'Sepal.Length' not found

实现我正在尝试的正确方法是什么?

最佳答案

这可以通过下面的技巧来实现,但除了其他潜在的副作用之外,这既丑陋又不优雅。谨慎使用!

实际上,您在管道内“硬分配”了一个变量:
这里的代码:

iris %>% 
mutate(Sepal.Length = Sepal.Length*100) %>%
{. ->> tmp} %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width, fill = Sepal.Length)) +
geom_col() +
scale_fill_gradient2(low = "yellow", high = "green", mid = "red",
midpoint = median(tmp$Sepal.Length))

rm(tmp) # remove temporary object

编辑 :在@jd-caddell 之后,我稍微调整了我的代码以完美匹配您的用例。

enter image description here

关于r - 如何在ggplot中引用管道对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61503696/

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