绘制从两个不同数据中选择的两个向量

时间:2018-10-26 16:12:52

标签: r ggplot2

我在df1中有一组相关值。我想选择高于0.3的相关值,并分别从df2和df3绘制相应的“基因”和“ miRNA”图。 例如,基因“ 4057”和miRNA“ hsa-miR-10a-5p”具有0.377的相关性,那么我想从df2中选择该基因,并从df3中选择该miRNA,并将这两个载体相互绘制。

矩阵的大小不同,因此我需要从df2和df3获取行名以绘制基因和miRNA。

df1(相关值)

{Binding Impacts}

df2(基因)

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")))

df3(miRNA)

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")))

1 个答案:

答案 0 :(得分:1)

我完全不确定这是您想要的那种图,但是它确实绘制了相关性大于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))

enter image description here

按照OP的要求,这是一个在每个相关向量上绘制一个图的解决方案。

ggplot(res, aes(gene, miRNA)) +
  geom_point(aes(colour = vector)) +
  facet_grid(vector ~ ., scales = "free")

enter image description here

相关问题