绘制颜色模式图

时间:2013-05-23 07:58:42

标签: python r numpy

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

enter image description here

颜色代码基于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的情况一样。

请帮我看一下附件中的数字。

1 个答案:

答案 0 :(得分: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"

请注意。两个NA被添加到数据中。

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

enter image description here