如何为ggplot2';编写函数;dplyr工作流中的s缩放?
我想在一个管道工作流中动态设置如何为ggplot2';编写函数;dplyr工作流中的s缩放?,r,ggplot2,dplyr,R,Ggplot2,Dplyr,我想在一个管道工作流中动态设置ggplot2::scale\u x\u discrete()(或类似)中的标签,由于我失败了,似乎我对管道的工作方式有误解。我在下面的两个示例中说明了我的问题,示例1可以很好地工作,而示例2是我想要的编写代码的方法。我想一步操作一个变异变量的标签 library(dplyr) library(ggplot2) 有效的方法如下。如您所见,我可以通过引用中间data.framedf # Example 1 df <- mtcars %>% m
ggplot2::scale\u x\u discrete()
(或类似)中的标签,由于我失败了,似乎我对管道的工作方式有误解。我在下面的两个示例中说明了我的问题,示例1可以很好地工作,而示例2是我想要的编写代码的方法。我想一步操作一个变异变量的标签
library(dplyr)
library(ggplot2)
有效的方法如下。如您所见,我可以通过引用中间data.framedf
# Example 1
df <-
mtcars %>%
mutate(disp = cut(disp, breaks = 5))
df %>%
ggplot(aes(disp, hp)) +
geom_point() +
scale_x_discrete(labels = substring(levels(df$disp), 2, 4))
我需要写什么来代替
.data$disp
?您可以使用大括号将整个ggplot生成一个表达式
mtcars %>%
mutate(disp = cut(disp, breaks = 5)) %>%
{
ggplot(data = ., aes(disp, hp)) +
geom_point() +
scale_x_discrete(labels = substring(levels(.$disp), 2, 4))
}
然后,您可以在整个过程中将数据引用为
。您可以将函数传递给标签
参数:
library(dplyr)
library(ggplot2)
mtcars %>%
mutate(disp = cut(disp, breaks = 5)) %>%
ggplot() + aes(disp, hp) +
geom_point() +
scale_x_discrete(labels = function(x) substring(x, 2, 4))
library(dplyr)
library(ggplot2)
mtcars %>%
mutate(disp = cut(disp, breaks = 5)) %>%
ggplot() + aes(disp, hp) +
geom_point() +
scale_x_discrete(labels = function(x) substring(x, 2, 4))