我正在尝试在ggplot2中绘制图形,并试图突出显示或区分另一个因素,下一个代码可以重现我正在尝试对Datsun 710汽车的红点进行的操作:< / p>
st1
但是我想这样做而不用在第八行 mtcars $ car 上再次调用df,而不要依赖ggplot第一个df参数之外的df。
有可能吗?
答案 0 :(得分:2)
在括号中使用点:
library(dplyr)
library(forcats)
library(ggplot2)
library(tibble)
mtcars %>%
rownames_to_column("car") %>%
{ ggplot(., aes(x = fct_reorder(car, mpg), y = mpg, label = mpg)) +
geom_point(color = if_else(.$car == "Datsun 710", "Red", "Black")) +
geom_text(size = 3, hjust = -0.2) +
coord_flip()
}
答案 1 :(得分:1)
您可以创建一个强制使用相同数据框的函数。
library(tibble)
library(ggplot2)
library(magrittr)
library(forcats)
library(dplyr)
mtcars2 <- mtcars %>%
rownames_to_column("car")
foo <- function(x){
x %>%
ggplot(aes(x = fct_reorder(car, mpg),
y = mpg,
label = mpg)) +
geom_point(color = if_else(x$car == "Datsun 710", "Red", "Black")) +
geom_text(size = 3, hjust = -0.2) +
coord_flip()
}
foo(mtcars2)
但是请注意,如果是小标题,则$符号将不起作用,您需要使用pull()。
不过,我认为在此处进行管道输送没有太大好处。