2016-03-13 3 views
2

Я использую библиотеку R corrplot. Это выглядит потрясающе, однако для создания действительно хорошего графика я хочу изменить метки строк и столбцов корреляционной матрицы.R corrplot изменение метки данных

Одно решение сделать что-то вроде этого:

cbak <- colnames(my.data.frame) 
colnames(my.data.frame) <- c("a", "set", "of", "labels") 
corrplot(cor(my.data.frame)) 
colnames(my.data.frame) <- cbak 

Однако это выглядит странно и некрасиво.

Я думаю, что я должен работать с параметром labels функции text(), но я не могу понять, как это сделать.

corrplot(cor(my.data.frame), labels=c("a", "set", "of", "labels")) 

приводит

Error in text.default(pos.xlabel[, 1], pos.xlabel[, 2], newcolnames, srt = tl.srt, : 
    invalid 'pos' value 
In addition: Warning message: 
In text.default(pos.xlabel[, 1], pos.xlabel[, 2], newcolnames, srt = tl.srt, : 
    NAs introduced by coercion 

Как сделать это правильно?

ответ

3

В текущем corrplot версии 0.75, вы не можете использовать labels параметр, поскольку метки X и Y вычисляются в зависимости от corrplot()colnames() и rownames() входных corr матрицы.

Я использую подобный подход, как вы предложили:

M <- cor(mtcars) 
colnames(M) <- c("a", "set", "of", "x", "labels", 1:6) 
corrplot(M, method = "color") 

BTW, я связал это StackOverflow вопрос от нашего выпуска GitHub трекере: https://github.com/taiyun/corrplot/issues/20

UPDATE: В текущем corrplot версия 0.78, также выражения plotmath допускаются в именах переменных. Просто прикрепите свое имя одним из символов «:», «=» или «$».

Пример:

M <- cor(mtcars)[1:5,1:5] 
colnames(M) <- c("alpha", "beta", ":alpha+beta", ":a[0]", "=a[beta]") 
rownames(M) <- c("alpha", "beta", NA, "$a[0]", "$ a[beta]") 
corrplot(M) 

enter image description here

+0

Есть ли причина, почему, когда я запустить пример кода на моей консоли, индексы не появляются в метках? Должен ли я что-то задавать раньше? – AJMA

+0

ОК, я не видел ОБНОВЛЕНИЕ. Теперь он работает в последней версии до выпуска (версия 0.82) – AJMA