Учитывая следующий график ggpairs:
data(iris)
ggpairs(iris[1:4],
lower=list(
mapping = aes(color=iris$Species),
continuous = wrap("points", size=0.7)
)
)
Как я могу добавить отдельные линии регрессии к каждому из точечных графиков без сопоставления линии регрессии с группой, как это произошло бы при добавлении continuous = wrap("smooth")
?
Я хотел бы, чтобы точки были окрашены по группам, но линия регрессии для отношения между переменными x и y в целом.
Я не могу понять, где разместить отображение aes, чтобы оно влияло только на «точки», а не на «гладкое».
Вам нужно создать свою собственную функцию, если вы хотите такие специализированные графики. Он должен быть в определенном формате, принимать аргументы data
, mapping
и ...
и создавать из них ggplot:
library(GGally)
my_func <- function(data, mapping, ...) {
ggplot(data, mapping) +
geom_point(size = 0.7) +
geom_smooth(formula = y~x, method = loess, color = "black")
}
ggpairs(iris[1:4],
lower=list(
mapping = aes(color=iris$Species),
continuous = my_func
)
)
Если вы ищете прямую линию регрессии, просто измените my_func
соответствующим образом. Например,
my_func <- function(data, mapping, ...) {
ggplot(data, mapping) +
geom_point(size = 0.7) +
geom_smooth(formula = y~x, method = lm, color = "black", se = FALSE,
linetype = 2)
}
Дает тебе:
Отлично, спасибо. Я бы не подумал применить пользовательские функции. Цените помощь!