我知道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
的情况一样。
请帮我看一下附件中的数字。
答案 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()