0

我知道 Stack Overflow 不是一个代码编写服务,但我真的被这个服务卡住了,我不知道如何绘制这样的地图:

在此处输入图像描述

其中颜色代码基于 p 值;p值越小,颜色越亮。点的大小由重叠百分比决定。

我有 3 个样本的数据,如下所示:

            Sample1                  Sample2                  Sample3   
Description percentage    p-value    Percentage    p-value    Percentage    p-value
Trendy      0.1585        0          0.1646        1.11E-016  0.2397        6.41E-014
nonTrendy   0.219         5.55E-016                           0.2203        9.84E-012
Specific    0.1713        9.99E-016  0.162         2.74E-011  0.1838        1.73E-012
nonspecific 0.2119        3.02E-013  0.1356        0.0000613  0.2044        1.1E-011
Robotics    0.1632        7.85E-013  0.1263        0.00000361 0.2158        0
human       0.2533        7.25E-012  0.1733        0.0000218  0.2069        4.16E-008

对于每个样本,我都有一个百分比重叠(是的,这个百分比没有乘以 100,所以它的比例为 1)和一个 p 值。

此外,很少有样本可能有缺失值(百分比和 p 值)。发生这种情况是因为没有明显的重叠,sample2例如nonTrendy.

请帮助我得到一个像附件中的数字。

4

1 回答 1

1

以下脚本在 R 中创建了一个绘图。它与您的示例绘图不完全一样,但可以对其进行修改。

text <- "Sample1     Sample2     Sample3     
Description percentage  p-value Percentage  p-value Percentage  p-value
Trendy  0.1585  0   0.1646  1.11E-016   0.2397  6.41E-014
nonTrendy   0.219   5.55E-016   NA     NA   0.2203  9.84E-012
Specific    0.1713  9.99E-016   0.162   2.74E-011   0.1838  1.73E-012
nonspecific 0.2119  3.02E-013   0.1356  0.0000613   0.2044  1.1E-011
Robotics    0.1632  7.85E-013   0.1263  0.00000361  0.2158  0
human   0.2533  7.25E-012   0.1733  0.0000218   0.2069  4.16E-008"

笔记。两个NAs 被添加到数据中。

lines <- readLines(textConnection(text), 8)
strings <- strsplit(lines, " +")
sam <- strings[[1]]
des <- unlist(lapply(strings[-1], "[", 1))
coln <- sub("-", "", strings[[2]][-1][1:2])
val <- do.call(rbind, lapply(strings[-(1:2)], function(x) as.numeric(x[-1])))

perc <- as.vector(val[ , as.logical(seq(ncol(val)) %% 2)])
pval <- as.vector(val[ , !seq(ncol(val)) %% 2])

dat <- setNames(data.frame(des[-1], perc, pval), c(des[1], coln))
dat$sample <- rep(sam, each = nrow(val))

library(ggplot2)
ggplot(dat, aes(colour = pvalue, size = percentage, 
                x = sample, y = Description)) +
  geom_point() + 
  theme_bw()

在此处输入图像描述

于 2013-05-23T09:08:17.003 回答