[英]Plot two vectors selected from two different data.frames
我在 df1 中有一组相关值。 我想选择高于 0.3 的相关值,并分别绘制来自 df2 和 df3 的相应“基因”和“miRNA”的图。 例如,基因“4057”和 miRNA“hsa-miR-10a-5p”的相关性为 0.377,然后我想从 df2 中选择那个基因和从 df3 中选择那个 miRNA 并将这两个向量相互作图。
矩阵具有不同的大小,因此我需要从 df2 和 df3 中获取行名以获取要绘制的基因和 miRNA。
df1(相关值)
df1 <-
structure(c(-0.123527914476431, -0.00191368375009113, 0.206329536015974,
-0.0709338776700445, -0.115896333017424, -0.125478547128287,
-0.00931326091711015, 0.0193057941898672, -0.144565138149741,
-0.0594153240504483), .Dim = c(5L, 2L), .Dimnames = list(c("hsa-let-7a-3p",
"hsa-let-7a-5p", "hsa-let-7b-3p", "hsa-let-7b-5p", "hsa-let-7c-5p"
), c("9473", "9446")))
df2(基因)
df2 <-
structure(c(4.95596367554674, 4.83602254848161, 4.28774184754794,
5.42319073450686, 4.99602258870066, 3.84789833077499, 4.40660838665264,
3.90254998563245, 5.7625184441094, 3.50353293596127, 4.80461918489051,
3.41880869529729, 5.13990627733018, 5.06752841971704, 2.54781787941398,
5.32269972247275, 1.72108547809436, 4.23107687831885, 4.38225432253243,
1.74793463045192), .Dim = 5:4, .Dimnames = list(c("8813", "2519",
"2729", "4800", "57185"), c("9446", "9450", "9473", "9484")))
df3 (miRNA)
df3 <-
structure(c(5.33977753674163, 16.7094706871338, 4.23758718121094,
12.6275105554044, 9.04107044295747, -0.685470517077967, 16.7897917316432,
-4.25347907370252, 13.4032906994389, 12.4040556704001, 2.51260901116279,
16.0324845504096, 5.50096403268869, 12.0305530420621, 11.8057011378596,
1.00715758856066, 15.6131178756706, 2.48509953100854, 11.9807372642204,
7.93896000301356), .Dim = 5:4, .Dimnames = list(c("hsa-let-7a-3p",
"hsa-let-7a-5p", "hsa-let-7b-3p", "hsa-let-7b-5p", "hsa-let-7c-5p"
), c("9446", "9450", "9473", "9484")))
我完全不确定这是您想要的那种图表,但它确实绘制了彼此相关性大于 0.3 的基因和 miRNA 的载体。
library(ggplot2)
inx <- which(df1 > 0.0, arr.ind = TRUE)
res <- data.frame()
k <- 0L
for(i in 1:nrow(inx)){
x <- df2[, inx[i, 2]]
y <- df3[, inx[i, 1]]
k <- k + 1L
tmp <- data.frame(vector = k, gene = x, miRNA = y)
res <- rbind(res, tmp)
}
res$vector <- factor(res$vector)
ggplot(res, aes(gene, miRNA)) +
geom_point(aes(colour = vector))
按照 OP 的要求,这里是一个解决方案,每个相关向量有一个图。
ggplot(res, aes(gene, miRNA)) +
geom_point(aes(colour = vector)) +
facet_grid(vector ~ ., scales = "free")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.