【问题标题】:How to plot multi-variable data如何绘制多变量数据
【发布时间】:2023-04-04 02:06:01
【问题描述】:

我有一个名为mydf 的数据框。我有带有唯一基因名称的gene 列和带有这些基因的searched_(在许多个体中搜索该基因)和found_(在这些许多个体中找到)列。我想绘制一个图表,但不确定在 R 中最好的方法是什么。我希望看到 searched 条形图和 found 条形图彼此重叠。有可能得到吗?

     mydf<-structure(c("FLT3-TKD", "DNMT3A", "IDH1", "190", "0", "190", 
"5.26315789473684", "NaN", "6.8421052631579", "186", "0", "188", 
"4.83870967741935", "NaN", "7.97872340425532", "123", "0", "123", 
"7.31707317073171", "NaN", "8.13008130081301"), .Dim = c(3L, 
7L), .Dimnames = list(NULL, c("gene", "searched_man", "found_man", 
"searched_cat", "found_cat", "searched_goat", "found_goat")))

【问题讨论】:

  • 一般来说,ggplot2 与tidy data 配合得更好。将您的数据格式化成整齐的数据也将使人们更容易为您提供帮助。

标签: r ggplot2


【解决方案1】:

基础 R 解决方案:

读入数据

使用您的代码,我最终得到了一个充满字符的矩阵。这不好。

mydf <- as.data.frame(mydf)
mydf[, -1] <- lapply(mydf[, -1], function(x) as.numeric(as.character(x)))
str(mydf)

把它变成长格式

mydf2 <- data.frame(gene = mydf$gene,
                    animal = rep(c('man', 'cat', 'goat'), each = nrow(mydf)),
                    searched = unlist(mydf[, seq(2, ncol(mydf) - 1, 2)]),
                    found = unlist(mydf[, seq(3, ncol(mydf), 2)]),
                    row.names = NULL)

给予:

      gene animal searched    found
1 FLT3-TKD    man      190 5.263158
2   DNMT3A    man        0      NaN
3     IDH1    man      190 6.842105
4 FLT3-TKD    cat      186 4.838710
5   DNMT3A    cat        0      NaN
6     IDH1    cat      188 7.978723
7 FLT3-TKD   goat      123 7.317073
8   DNMT3A   goat        0      NaN
9     IDH1   goat      123 8.130081

一个情节的例子是(你给出的关于你想看到的内容的信息为零):

library(ggplot2)
ggplot(mydf2, aes(x = animal, y = found / searched)) + 
  geom_bar(stat = 'identity') +
  facet_wrap(~gene)

然后是另一个例子:

mydf2$not_found <- mydf2$searched - mydf2$found
mydf3 <- tidyr::gather(mydf2, 'type', 'val', found:not_found)

ggplot(mydf3, aes(x = animal, y = val, fill = type)) + 
  geom_bar(stat = 'identity') +
  facet_wrap(~gene)

【讨论】:

  • 谢谢,但是没有显示foundsearched这组数据?
  • 我想查看搜索到的条形图以及位于每个搜索到的条形图顶部的找到的统计信息。有可能得到吗?
  • 显示找到的比例。同样,我对您的数据知之甚少,只说您想要“图表”。你想要一个堆叠的条形图吗?
  • 分类明智,您的图表看起来不错,但我也想找到并搜索要表示的数据。
  • 也许先搜索一下。例如:stackoverflow.com/questions/6455088/…
猜你喜欢
  • 2020-12-06
  • 2018-11-30
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
相关资源
最近更新 更多