как добавить строку x = y в матрицу диаграммы рассеяния?

Я хотел бы добавить линию x = y к диаграммам рассеяния матрицы диаграммы рассеяния, как показано ниже: пример spm

Кто-нибудь знает функцию, которая может сделать это с помощью простого варианта? до сих пор я пробовал пары и здесь scatterplotMatrix от car-package и не мог найти такой вариант, а также нет подобного вопроса здесь, на форуме. Надеюсь, вы сможете увидеть проблему без воспроизводимых данных... Большое спасибо!

PS: Я знаю, как создать такой сюжет вручную один участок за другим - просто было бы неплохо опустить работу и сделать это с одним вариантом. Пожалуйста, я не хочу тратить ваше время на объяснение таких решений.


person WeTo    schedule 06.10.2016    source источник


Ответы (2)


Как упоминалось здесь следующий код должен работать, заменив iris вашим набором данных.

pairs(iris, panel= function(x,y,...){ 
        points(x,y); 
        abline(a=0, b=1)}) 
person Randel    schedule 24.04.2017

Вы можете использовать пакет GGally вместе с ggplot2. См. последний пример в ggpairs.

Таким образом, вы можете пойти и добавить свои слои на отдельные участки, просто добавив geom_line(aes(x = ..y..)). (..y..), позвольте вам ссылаться на поле y внутри - необходимая техническая особенность)

library(GGally)
library(ggplot2)
GGally::ggpairs(data = cars, diag = T)
custom_car <- ggpairs(mtcars[, c("mpg", "wt", "cyl")])

## prints all plot pairs
custom_car
## a plot at specific cell
custom_car[3, 1]
custom_car[3, 1] + geom_line(aes(x = ..y..))
custom_car[3, 1] + geom_line(aes(y = ..x..))

# or do you mean a single vertical line ?
custom_car[3, 1] + geom_vline(xintercept = 20, col = "red", lwd = 2)
person Drey    schedule 06.10.2016