R 在ggplot图层中引用管道数据集以进行子集设置

R 在ggplot图层中引用管道数据集以进行子集设置,r,ggplot2,dplyr,magrittr,R,Ggplot2,Dplyr,Magrittr,试图找到一种方法,为不同的ggplot2 geom图层引用数据集的不同部分,而不必首先在全局环境中保存数据集 Ex非工作溶液 read_excel("Book1.xlsx",sheet = "Sheet2") %>% ggplot(aes(x,y)) + geom_col() + geom_point(data=subset($ID == "1"),colour="red") 由于我没有以R可以识别的方式引用管道(magrittr)数据集,所以上面的方法似乎不起作用。我已经

试图找到一种方法,为不同的ggplot2 geom图层引用数据集的不同部分,而不必首先在全局环境中保存数据集

Ex非工作溶液

read_excel("Book1.xlsx",sheet = "Sheet2") %>% 
  ggplot(aes(x,y)) +
  geom_col() +
  geom_point(data=subset($ID == "1"),colour="red")
由于我没有以R可以识别的方式引用管道(magrittr)数据集,所以上面的方法似乎不起作用。我已经搜索过了,但我能看到的唯一解决方案是基于我第一次在全局环境中保存数据集的解决方案

首先保存数据集的Ex-working解决方案

df <- read_excel("Book1.xlsx",sheet = "Sheet2")

  ggplot(df,aes(x,y)) +
  geom_col() +
  geom_point(data=subset(df,ID == "1"),colour="red")

df您可以尝试使用
dplyr

library(dplyr)
library(ggplot2)

read_excel("Book1.xlsx",sheet = "Sheet2") %>% 
  ggplot(aes(x, y)) +
  geom_col() +
  geom_point(data = . %>% filter(ID == "1"), colour = "red")

第二段代码真的有效吗?至少有一些打字错误(
geom_pont
)。而且,你想画什么也不是很清楚。你是在混合条形图和点吗?是的,更一般地说,如果不先将数据保存在对象中以供参考,我似乎无法使用数据子集添加图层。图层的选择并不重要。谢谢你提醒我打字错误,will fix。看来他的解决方案适用于
dplyr
,但不适用于
magrittr
。我不知道。OP说他使用的是
magrittr
。谢谢,这会产生一个结果,但由于某种原因,它没有显示图表中的第二层。我猜这意味着点代表管道数据帧,那么?仅供参考,我使用dplyr。之所以只写magrittr,是因为dplyr中的包负责管道功能。没什么区别。