используйте ggpairs для создания этого сюжета
у меня есть код в блестящем приложении, которое создает первый сюжет ниже. Как вы видите, размер шрифта зависит от размера коэффициента корреляции. Я хотел бы произвести что-то подобное с ggpairs (GGally) или ggplot2. Второе изображение ниже было создано со следующим кодом:
library(GGally)
ggpairs(df,
upper = list(params = c(size = 10)),
lower = list(continuous = "smooth", params = c(method = "loess", fill = "blue"))
)
как вы можете видеть, размер шрифта корреляции регулируется с помощью размера, но когда я устанавливаю вектор размеров, используется только первое значение. Я также хотел бы удалить ' Corr:' и добавьте показатель значимости. Также было бы неплохо использовать цвета для знака коэффициента корреляции. В Нижнем,method
и fill
не связаны с smooth
. Любые предложения о том, как получить 2-ой участок, чтобы захватить больше возможностей 1-го было бы здорово.
Anscombe это:
df <- structure(list(y1 = c(8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24,
4.26, 10.84, 4.82, 5.68), x1 = c(10L, 8L, 13L, 9L, 11L, 14L,
6L, 4L, 12L, 7L, 5L), y2 = c(9.14, 8.14, 8.74, 8.77, 9.26, 8.1,
6.13, 3.1, 9.13, 7.26, 4.74), x2 = c(10L, 8L, 13L, 9L, 11L, 14L,
6L, 4L, 12L, 7L, 5L), y3 = c(7.46, 6.77, 12.74, 7.11, 7.81, 8.84,
6.08, 5.39, 8.15, 6.42, 5.73), x3 = c(10L, 8L, 13L, 9L, 11L,
14L, 6L, 4L, 12L, 7L, 5L)), .Names = c("y1", "x1", "y2", "x2",
"y3", "x3"), class = "data.frame", row.names = c(NA, -11L))
# based mostly on http://gallery.r-enthusiasts.com/RGraphGallery.php?graph=137
panel.plot <- function(x, y) {
usr <- par("usr"); on.exit(par(usr))
par(usr = c(0, 1, 0, 1))
ct <- cor.test(x,y)
sig <- symnum(ct$p.value, corr = FALSE, na = FALSE,
cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1),
symbols = c("***", "**", "*", ".", " "))
r <- ct$estimate
rt <- format(r, digits=2)[1]
cex <- 0.5/strwidth(rt)
text(.5, .5, rt, cex=cex * abs(r))
text(.8, .8, sig, cex=cex, col='blue')
}
panel.smooth <- function (x, y) {
points(x, y)
abline(lm(y~x), col="red")
lines(stats::lowess(y~x), col="blue")
}
pairs(df, lower.panel=panel.smooth, upper.panel=panel.plot)
1 ответов
редактировать для GGally 1.0.1
С params
теперь устарел, используйте wrap
вот так:
ggpairs(df[, 1:2],
upper = list(continuous = wrap("cor", size = 10)),
lower = list(continuous = "smooth"))
оригинальный ответ
настройка сложных участков не всегда доступна через список параметров. Это естественно: есть слишком много параметров, чтобы иметь в виду. Таким образом, единственным надежным вариантом является изменение источника. Это особенно приятно, когда проект размещено на github.
вот простая модификация для начала, выполненная в раздвоенный РЕПО. Самый простой способ обновить код и создать график ниже-скопировать и вставить функцию ggally_cor
в вашей глобальной среде, а затем переопределить ту же функцию в GGally
пространство имен:
# ggally_cor <- <...>
assignInNamespace("ggally_cor", ggally_cor, "GGally")
ggpairs(df[, 1:2],
upper = list(params = c(size = 10)),
lower = list(continuous = "smooth"))
Я удалил текстовую метку и добавил индикаторы значимости. Однако изменение цвета и размера не так просто, поскольку они отображаются ранее. Я все еще думая об этом, но вы получаете идею и можете двигаться дальше с дальнейшими настройками.
Edit: я обновил код, см. мою последнюю фиксацию. Теперь он сопоставляет размер метки с абсолютным значением корреляции. Вы можете сделать то же самое, если хотите другого цвета, хотя я думаю, что это, вероятно, не очень хорошая идея.