Как использовать corrplot с is.corr = FALSE

#r #r-corrplot

#r #r-corrplot

Вопрос:

Ранее я создал красивый функциональный и совершенный фактический график корреляции с corrplot (мой график). Теперь я должен получить базовые данные в том же виде. Итак, моя цель — иметь треугольные матрицы подобия тех же цветов, что и мой график корреляции. Представьте это как условное форматирование в Excel.

Мои данные: мои данные из Excel

Ссылка на файл данных CSV

он загружается как csv и может отлично считывать csv

Мой код: corrplot(Phylogeny, is.corr=FALSE,method="number", cl.lim=c(0,1))

Ошибка, которую он выдает мне: Error in if (any(corr < cl.lim[1]) || any(corr > cl.lim[2])) { : Missing value, where TRUE/FALSE is required

  • я убедился, что все столбцы являются числовыми
  • я позаботился о том, чтобы заполнить недостающие биты NA (потому что раньше это было проблемой)
  • я убедился, что все мои значения находятся в диапазоне от 0 до 1, как я хочу, чтобы предел был (между ними он сказал мне, что мои значения не находятся в пределах предела, когда я попробовал с некоторыми вещами)
  • ошибка не изменяется при изменении предела
  • ошибка не изменяется, когда я извлекаю is.corr= FALSE (по умолчанию = TRUE)
  • я поиграл с corrplot.mixed, и он все еще не работает
  • ссылались на информацию из введения Corrplot

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

Чего мне здесь не хватает, что он не хочет возвращать мне мою таблицу с красивыми цветами?

Комментарии:

1. не могли бы вы добавить свои данные в формате dput

2. @Bertil Baron Я добавил данные для загрузки в формате CSV. Посмотрел функцию dput, но не был уверен, как ее добавить — надеюсь, это тоже сработает. извините

Ответ №1:

У меня была та же ошибка, но я смог ее исправить, преобразовав my data.frame в a matrix . В итоге я corrplot(as.matrix(df), is.corr = FALSE) получил .

Ответ №2:

Если я правильно понимаю, ваши опубликованные данные уже являются корреляционной матрицей, хотя и не полностью симметричной, которая была бы создана при вызове cor необработанных данных.

В этом случае проблема заключается только в том, что у вас есть имена переменных (видов) в качестве столбца в ваших данных. Измените этот столбец на имена строк, удалите имена переменных и вызовите corrplot , как предлагает пользователь9536160:

 # read in your data    
phyl <- as.data.frame(read_csv("Phylogeny.csv"))

# name rows and drop variable names in the df itself
row.names(phyl) <- phyl$Species
phyl <- phyl %>%
  select(-Species)

# call corrplot
corrplot(as.matrix(phyl), is.corr = FALSE)
  

Результат:

результат corrplot