График Точечной матрицы корреляции с другим размером точки (в R)

Я просто приехал крест этот хороший код, который делает этот точечный график матрицы:

alt text
(источник: free.fr)

И требуемый для реализации его к масштабу likret переменные (целые числа 1 - 5) путем создания размеров/цветов точки (в более низком треугольнике) отличаются согласно тому, сколько опций того типа происходит (как эффект, который дрожание, возможно, дало мне).

Какая-либо идея о том, как сделать это на механизме графического изображения основы?

Обновление:

Я сделал следующую функцию, но не знайте, как иметь масштаб точек всегда быть "хорошими", что Вы думаете?

panel.smooth2 <- function (x, y, col = par("col"), bg = NA, pch = par("pch"), 
                    cex = 1, col.smooth = "red", span = 2/3, iter = 3, ...) 
{
    require(reshape)
    z <- merge(data.frame(x,y), melt(table(x ,y)),sort =F)$value
    z <- z/ (4*max(z)) 

    symbols( x, y,  circles = z,#rep(0.1, length(x)), #sample(1:2, length(x), replace = T) ,
            inches=F, bg="blue", fg = bg, add = T)

    # points(x, y, pch = pch, col = col, bg = bg, cex = cex)
    ok <- is.finite(x) & is.finite(y)
    if (any(ok)) 
        lines(stats::lowess(x[ok], y[ok], f = span, iter = iter), 
            col = col.smooth, ...)
}



a1 <- sample(1:5, 100, replace = T)
a2 <- sample(1:5, 100, replace = T)
a3 <- sample(1:5, 100, replace = T)
aa <- data.frame(a1,a2,a3)


pairs(aa , lower.panel=panel.smooth2)

5
задан Glorfindel 22 July 2019 в 04:19
поделиться

2 ответа

Вы можете использовать ' символы ' (аналогично методам 'lines', 'abline' и др.)

Этот метод даст вам штраф -подробный контроль над размером и цветом символов в одной строке кода.

Используя «символы», вы можете установить размер, цвет и форму символа. Форма и размер задаются путем передачи вектора размера каждого символа и привязки его к «кругам», «квадратам», «прямоугольникам» или «звездам», например, «звезды» = c (4, 3, 5, 1). Цвет устанавливается с помощью «bg» и / или «fg».

symbols( x, y, circles = circle_radii, inches=1/3, bg="blue", fg=NULL) 

Если я понимаю вторую часть вашего вопроса, вы хотите быть достаточно уверены, что функция, которую вы используете для масштабирования символов на вашем графике, делает это значимым образом. Функция 'symbols' масштабирует (например) радиусы кругов на основе значений в переменной 'z' (или столбце data.frame и т. Д.). В строке ниже я установил максимальный размер символа (радиус) как 1/3 дюйма - каждый символ, кроме самого большого, имеет радиус, на несколько меньший, масштабируемый отношением значения этой точки данных к наибольшему значению. чем тот в пропорции к. Хороший ли это выбор? Не знаю - мне кажется, что диаметр или, в частности, окружность может быть лучше. В любом случае это тривиальное изменение. В общем, «символы» с переданными «кругами» будут масштабировать радиусы символов пропорционально координате «z» - вероятно, лучше всего подходят для непрерывных переменных.Я бы использовал цвет ('bg') для дискретных переменных / факторов.

Один из способов использования 'символов' - это вызвать функцию построения графика и передать тип = 'n', который создает объект графика, но подавляет рисование символов, чтобы вы могли рисовать их с помощью функции "символы".

Я бы не рекомендовал cex для этой цели. 'cex' - это коэффициент масштабирования как для размера текста, так и для размера символов, но на какой из этих двух элементов графика он влияет, зависит от того, когда вы его передаете - если вы установите его через 'par', он действует на большую часть появляющегося текста на участке; если вы установите его в функции «plot», это повлияет на размер символов.

3
ответ дан 14 December 2019 в 19:08
поделиться

Конечно, просто используйте cex :

set.seed(42)
DF <- data.frame(x=1:10, y=rnorm(10)*10, z=runif(10)*3) 
with(DF, plot(x, y, cex=z))

, который дает вам различные размеры круга. Цвет может быть просто четвертым измерением.

2
ответ дан 14 December 2019 в 19:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: