在 R 中制作相关值的矩形矩阵,可能使用 corrplot
Make rectangular matrix of correlation values in R, possibly using corrplot
我想在 R 中制作一个相关值矩阵。但是,我没有将参数与它们自己进行比较,所以它不是典型的三角形并在对角轴上镜像的 corrplot。我实际上已经有了相关值。
我只是希望招募 corrplot
函数(来自 corrplot package),它生成如下图像:
我的数据已经包含我想要绘制的相关值,是:
X animal.1 animal.2 animal.3 animal.4 animal.5
1 parameter 1 0.10258087 0.3338782 0.150246554 0.07295133 0.2484152
2 parameter 2 0.04205748 0.4062727 -0.002101464 0.12068818 0.2951127
3 parameter 3 0.11264488 0.4114954 0.067145776 0.13361071 0.3246052
4 parameter 4 -0.02261649 -0.2426341 0.108042167 -0.12820517 -0.2005686
5 parameter 5 -0.01576384 -0.2300852 0.112941655 -0.12391976 -0.1906473
6 parameter 6 -0.09749030 -0.3110920 0.021994297 -0.13570257 -0.2557532
我希望绘图看起来像一个错误图,但它将是一个完整的矩形。我想要不同直径的圆圈,正值或负值的两种不同颜色,以及图一侧的颜色渐变。本质上,我想要矩形 table 值的 corrplot 主题。
我还要求查看是否可以在具有显着 (p<0.05) p 值的网格方块上放置星号。我现在附上 p 值矩阵的 dput 文件
structure(list(X = structure(1:6, .Label = c("parameter 1", "parameter 2",
"parameter 3", "parameter 4", "parameter 5", "parameter 6"), class = "factor"),
Animal.1 = c(0.2454906, 0.63471, 0.2019519, 0.7984066, 0.8587147,
0.2698293), Animal.2 = c(0.000103586, 1.62e-06, 1.15e-06,
0.005412082, 0.008451775, 0.000315107), Animal.3 = c(0.08796553,
0.9810688, 0.447827, 0.2211191, 0.2007585, 0.8038392), Animal.4 = c(0.4094627,
0.1713835, 0.1296492, 0.1460429, 0.1601174, 0.1236984), Animal.5 = c(0.004374306,
0.000653099, 0.00016464, 0.02213469, 0.0298038, 0.003315349
)), .Names = c("X", "animal.1", "animal.2", "animal.3", "animal.4",
"animal.5"), class = "data.frame", row.names = c(NA, -6L))
我认为您只需要将 df 转换为矩阵,然后 运行 corrplot
函数。
library(corrplot)
#Transform data to matrix
matrix_cor<-as.matrix(df[,-1])
#Set row names as df first column
row.names(matrix_cor)<-df[,1]
corrplot(matrix_cor,
method = "circle")
当你用 ggplot2
标记这个问题时,我为你提供了一种使用 ggplot2
来做这个的方法。
首先,您需要重塑包含相关值的数据框(此处命名为 df
)和具有 pvalues 的数据框(此处命名为 df_pval
)。
为此,您可以使用 tidyr
包(也是 tidyverse
包的一部分)中的 pivot_longer
函数。
在包含 pvalues 的数据框中,我们将添加一列 Label
,以便用星号标记所有低于 0.05 的值。
library(tidyr)
library(dplyr)
library(ggplot2)
corr_values <- df %>% pivot_longer(-X, names_to = "Animal", values_to = "value")
# Here an extract of the dataframe with correlation values after reshaping it:
X Animal value
<fct> <chr> <dbl>
1 parameter 1 animal.1 0.103
2 parameter 1 animal.2 0.334
3 parameter 1 animal.3 0.150
4 parameter 1 animal.4 0.0730
5 parameter 1 animal.5 0.248
6 parameter 2 animal.1 0.0421
corr_pval <- df_pval %>%
pivot_longer(-X, names_to = "Animal", values_to = "p.value") %>%
mutate(Label = ifelse(p.value < 0.05, "*",NA))
# Here an extract of the dataframe obtained
X Animal p.value Label
<fct> <chr> <dbl> <chr>
1 parameter 1 animal.1 0.245 NA
2 parameter 1 animal.2 0.000104 *
3 parameter 1 animal.3 0.0880 NA
4 parameter 1 animal.4 0.409 NA
5 parameter 1 animal.5 0.00437 *
6 parameter 2 animal.1 0.635 NA
然后,您可以使用 geom_point
和 geom_tile
来获取热图。
您还可以通过传递 scale_size_continuous
和 scale_color_gradient
.
等各种函数来自定义绘图的颜色、大小等。
最后,您可以通过将新数据帧 corr_pval
调用到 geom_text
并指定适当的 aesthetic
参数来为 pvalues
添加星号:
library(ggplot2)
ggplot(corr_values, aes(x = X, y = Animal))+
geom_tile(color = "black", fill = "white")+
geom_point(aes(color = value, size = abs(value)))+
scale_color_gradient2(low = "green", mid = "white", midpoint = 0, high = "red", name = "")+
scale_size_continuous(range = c(5,15), name = "")+
geom_text(data = corr_pval, aes(label = Label), size = 8, vjust = 0.7, hjust = 0.5)
所以,你应该得到这样的东西:
我想在 R 中制作一个相关值矩阵。但是,我没有将参数与它们自己进行比较,所以它不是典型的三角形并在对角轴上镜像的 corrplot。我实际上已经有了相关值。
我只是希望招募 corrplot
函数(来自 corrplot package),它生成如下图像:
我的数据已经包含我想要绘制的相关值,是:
X animal.1 animal.2 animal.3 animal.4 animal.5
1 parameter 1 0.10258087 0.3338782 0.150246554 0.07295133 0.2484152
2 parameter 2 0.04205748 0.4062727 -0.002101464 0.12068818 0.2951127
3 parameter 3 0.11264488 0.4114954 0.067145776 0.13361071 0.3246052
4 parameter 4 -0.02261649 -0.2426341 0.108042167 -0.12820517 -0.2005686
5 parameter 5 -0.01576384 -0.2300852 0.112941655 -0.12391976 -0.1906473
6 parameter 6 -0.09749030 -0.3110920 0.021994297 -0.13570257 -0.2557532
我希望绘图看起来像一个错误图,但它将是一个完整的矩形。我想要不同直径的圆圈,正值或负值的两种不同颜色,以及图一侧的颜色渐变。本质上,我想要矩形 table 值的 corrplot 主题。
我还要求查看是否可以在具有显着 (p<0.05) p 值的网格方块上放置星号。我现在附上 p 值矩阵的 dput 文件
structure(list(X = structure(1:6, .Label = c("parameter 1", "parameter 2",
"parameter 3", "parameter 4", "parameter 5", "parameter 6"), class = "factor"),
Animal.1 = c(0.2454906, 0.63471, 0.2019519, 0.7984066, 0.8587147,
0.2698293), Animal.2 = c(0.000103586, 1.62e-06, 1.15e-06,
0.005412082, 0.008451775, 0.000315107), Animal.3 = c(0.08796553,
0.9810688, 0.447827, 0.2211191, 0.2007585, 0.8038392), Animal.4 = c(0.4094627,
0.1713835, 0.1296492, 0.1460429, 0.1601174, 0.1236984), Animal.5 = c(0.004374306,
0.000653099, 0.00016464, 0.02213469, 0.0298038, 0.003315349
)), .Names = c("X", "animal.1", "animal.2", "animal.3", "animal.4",
"animal.5"), class = "data.frame", row.names = c(NA, -6L))
我认为您只需要将 df 转换为矩阵,然后 运行 corrplot
函数。
library(corrplot)
#Transform data to matrix
matrix_cor<-as.matrix(df[,-1])
#Set row names as df first column
row.names(matrix_cor)<-df[,1]
corrplot(matrix_cor,
method = "circle")
当你用 ggplot2
标记这个问题时,我为你提供了一种使用 ggplot2
来做这个的方法。
首先,您需要重塑包含相关值的数据框(此处命名为 df
)和具有 pvalues 的数据框(此处命名为 df_pval
)。
为此,您可以使用 tidyr
包(也是 tidyverse
包的一部分)中的 pivot_longer
函数。
在包含 pvalues 的数据框中,我们将添加一列 Label
,以便用星号标记所有低于 0.05 的值。
library(tidyr)
library(dplyr)
library(ggplot2)
corr_values <- df %>% pivot_longer(-X, names_to = "Animal", values_to = "value")
# Here an extract of the dataframe with correlation values after reshaping it:
X Animal value
<fct> <chr> <dbl>
1 parameter 1 animal.1 0.103
2 parameter 1 animal.2 0.334
3 parameter 1 animal.3 0.150
4 parameter 1 animal.4 0.0730
5 parameter 1 animal.5 0.248
6 parameter 2 animal.1 0.0421
corr_pval <- df_pval %>%
pivot_longer(-X, names_to = "Animal", values_to = "p.value") %>%
mutate(Label = ifelse(p.value < 0.05, "*",NA))
# Here an extract of the dataframe obtained
X Animal p.value Label
<fct> <chr> <dbl> <chr>
1 parameter 1 animal.1 0.245 NA
2 parameter 1 animal.2 0.000104 *
3 parameter 1 animal.3 0.0880 NA
4 parameter 1 animal.4 0.409 NA
5 parameter 1 animal.5 0.00437 *
6 parameter 2 animal.1 0.635 NA
然后,您可以使用 geom_point
和 geom_tile
来获取热图。
您还可以通过传递 scale_size_continuous
和 scale_color_gradient
.
最后,您可以通过将新数据帧 corr_pval
调用到 geom_text
并指定适当的 aesthetic
参数来为 pvalues
添加星号:
library(ggplot2)
ggplot(corr_values, aes(x = X, y = Animal))+
geom_tile(color = "black", fill = "white")+
geom_point(aes(color = value, size = abs(value)))+
scale_color_gradient2(low = "green", mid = "white", midpoint = 0, high = "red", name = "")+
scale_size_continuous(range = c(5,15), name = "")+
geom_text(data = corr_pval, aes(label = Label), size = 8, vjust = 0.7, hjust = 0.5)
所以,你应该得到这样的东西: