绘制具有特定列的不同颜色的矩阵的元素

时间:2015-08-25 16:28:06

标签: r graph ggplot2

我有以下相关矩阵。

       AUS   AUT   CAN   CHE   DEU  EU15   FRA   GBR   ITA   JPN   USA
AUS  1.000 0.058 0.476 0.313 0.111 0.277 0.184 0.296 0.202 0.192 0.267
AUT  0.058 1.000 0.254 0.658 0.749 0.761 0.626 0.387 0.460 0.410 0.278
CAN  0.476 0.254 1.000 0.390 0.321 0.534 0.377 0.538 0.391 0.231 0.746
CHE  0.313 0.658 0.390 1.000 0.604 0.706 0.610 0.310 0.565 0.437 0.305
DEU  0.111 0.749 0.321 0.604 1.000 0.859 0.620 0.387 0.472 0.520 0.369
EU15 0.277 0.761 0.534 0.706 0.859 1.000 0.808 0.682 0.713 0.601 0.531
FRA  0.184 0.626 0.377 0.610 0.620 0.808 1.000 0.467 0.553 0.444 0.357
GBR  0.296 0.387 0.538 0.310 0.387 0.682 0.467 1.000 0.324 0.407 0.591
ITA  0.202 0.460 0.391 0.565 0.472 0.713 0.553 0.324 1.000 0.492 0.315
JPN  0.192 0.410 0.231 0.437 0.520 0.601 0.444 0.407 0.492 1.000 0.321
USA  0.267 0.278 0.746 0.305 0.369 0.531 0.357 0.591 0.315 0.321 1.000

我的目标:按升序绘制所有相关性,为美国的相关性指定不同的颜色。

我已经完成了这样的所有相关性的绘制:

x[lower.tri(x)] <- NA
diag(x) <- NA
x <- as.vector(gdpcor)
x <- x[!is.na(x)]
x <- x[order(x)]
plot(x)

但我无法弄清楚如何为美国的相关性指定不同的颜色。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

如何开始:

x <- as.matrix(read.table(text="AUS   AUT   CAN   CHE   DEU  EU15   FRA   GBR   ITA   JPN   USA
AUS  1.000 0.058 0.476 0.313 0.111 0.277 0.184 0.296 0.202 0.192 0.267
AUT  0.058 1.000 0.254 0.658 0.749 0.761 0.626 0.387 0.460 0.410 0.278
CAN  0.476 0.254 1.000 0.390 0.321 0.534 0.377 0.538 0.391 0.231 0.746
CHE  0.313 0.658 0.390 1.000 0.604 0.706 0.610 0.310 0.565 0.437 0.305
DEU  0.111 0.749 0.321 0.604 1.000 0.859 0.620 0.387 0.472 0.520 0.369
EU15 0.277 0.761 0.534 0.706 0.859 1.000 0.808 0.682 0.713 0.601 0.531
FRA  0.184 0.626 0.377 0.610 0.620 0.808 1.000 0.467 0.553 0.444 0.357
GBR  0.296 0.387 0.538 0.310 0.387 0.682 0.467 1.000 0.324 0.407 0.591
ITA  0.202 0.460 0.391 0.565 0.472 0.713 0.553 0.324 1.000 0.492 0.315
JPN  0.192 0.410 0.231 0.437 0.520 0.601 0.444 0.407 0.492 1.000 0.321
USA  0.267 0.278 0.746 0.305 0.369 0.531 0.357 0.591 0.315 0.321 1.000"))


x[lower.tri(x)] <- NA
diag(x) <- NA

df <- subset(as.data.frame(as.table(x), responseName = 'Corr'),!is.na(Corr))
df <- df[order(df$Corr),]

ggplot(df, aes(x=1:nrow(df),y=Corr,col=Var2=='USA')) + geom_point()

enter image description here

旁注:如果您还没有尝试过,请查看library(corrplot)作为可视化相关性的好方法。例如:

corrplot(x, is.corr = FALSE, method='square', diag=FALSE)

enter image description here