【问题标题】:Error using corrplot使用 corrplot 时出错
【发布时间】:2014-02-04 02:54:38
【问题描述】:

我在使用 corrplot 解释错误消息方面需要帮助。

这是我的脚本

install.packages("ggplot2")
install.packages("corrplot")
install.packages("xlsx")

library(ggplot2)
library(corrplot)
library(xlsx)

#set working dir
setwd("C:/R")
#read xlsx data into R
df <- read.xlsx("TP_diff_frame.xlsx",1)
#set column as index
rownames(df) <- df$country
#remove column
df2<-subset(df, select = -c(country) )
#round values to to decimals


corrplot(df2, method="shade",shade.col=NA, tl.col="black", tl.srt=45)

我的 df2:

> df2
                     a    b     c     d     e    f    g
Sweden            0.09 0.19  0.00 -0.25 -0.04 0.01 0.00
Germany           0.11 0.19  0.01 -0.35  0.01 0.02 0.01
UnitedKingdom     0.14 0.21  0.03 -0.32 -0.05 0.00 0.00
RussianFederation 0.30 0.26 -0.07 -0.41 -0.09 0.00 0.00
Netherlands       0.09 0.16 -0.05 -0.26  0.02 0.02 0.01
Belgium           0.12 0.20  0.01 -0.34  0.01 0.00 0.00
Italy             0.14 0.22  0.01 -0.37  0.00 0.00 0.00
France            0.14 0.24 -0.04 -0.34  0.00 0.00 0.00
Finland           0.16 0.17  0.01 -0.26 -0.08 0.00 0.00
Norway            0.15 0.21  0.10 -0.37 -0.09 0.00 0.00

以及错误信息:

> corrplot(df2, method="shade",shade.col=NA, tl.col="black", tl.srt=45)

矩阵错误(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr, : 'dimnames' [2] 的长度不等于数组范围

【问题讨论】:

  • 调试:尝试dim(df2)并与length(dimnames(df2))比较

标签: r dataframe plot r-corrplot


【解决方案1】:

要将corrplot 包用于热图,您应该将data.frame 传递给matrix,并使用is.corr 参数。

df2 <- as.matrix(df2)

corrplot(df2, is.corr=FALSE)

【讨论】:

  • 这个问题(从 2014 年开始)得到了高度评​​价的答案,与您的问题基本相同。
【解决方案2】:

另一种选择是将其分成两行代码。

df2 <- cor(df, use = "na.or.complete")
corrplot(df2, method="shade",shade.col=NA, tl.col="black", tl.srt=45)

我会运行一个简单的 corrplot(例如 corrplot.mixed(df2))确保它有效,然后进行微调和美学。

【讨论】:

    【解决方案3】:

    我认为问题在于您正在绘制数据框而不是相关矩阵。尝试将最后一行更改为:

    corrplot(cor(df2), method="shade",shade.col=NA, tl.col="black", tl.srt=45)
    

    函数cor计算相关矩阵,这是你需要绘制的

    【讨论】:

    • 哦,我以为你可以将数据框传递给 corrplot 以生成热图。在这种情况下,我真正想要的是什么,以及在相关图上绘制数据帧的值。我想我走错了路……不过,它对你的回答很有效,谢谢
    • @jonas 很高兴它成功了。一开始我也犯过同样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    相关资源
    最近更新 更多