Я нахожу странным, что вы хотите, чтобы цвет зависел только от оси X, когда значения также используются на оси Y других графиков. Тем не менее, вот самодельная функция pairs_cutoff()
, которая делает то, что вы хотите.
pairs_cutoff <- function(data, cutoff, cols = c("red", "blue"),
only.lower = F, ...){
data <- as.data.frame(data)
cns <- colnames(data)
nc <- ncol(data)
layout(matrix(seq_len(nc^2), ncol = nc))
invisible(
sapply(seq_len(nc), function(i){
sapply(seq_len(nc), function(j){
if(i == j){
plot.new()
legend("center", bty = "n", title = cns[i], cex = 1.5, text.font = 2, legend = "")
} else {
if(j < i & only.lower)
plot.new()
else{
if(is.null(cutoff))
cols <- cols[1]
plot(data[,i], data[,j], col = cols[(data[,i] < cutoff) + 1],
xlab = cns[i], ylab = cns[j], ...)
}
}
})
})
)
}
Используя предложенные вами данные:
n = 1000
dat <- tibble(
xx1 = runif(n, min = 3, max = 10),
xx2 = runif(n, min = 3, max = 10),
xx3 = runif(n, min = 3, max = 10)
)
pairs_cutoff(dat, cutoff = 5, only.lower = T)
выводит следующий график:
Вы можете указать дополнительные параметры для функции построения графика (например, pch
) непосредственно для pairs_cutoff
. Также, если вам нужна полная симметрия c сетка графиков, установите only.lower = F
.