【发布时间】:2018-02-16 22:51:29
【问题描述】:
(我在talkstats.com 上的R 论坛和ggplot2 论坛上发布了同样的问题。)
在细胞生物学中,人们经常发布图像,其中一种蛋白质标记为绿色,第二种蛋白质标记为红色,然后他们只显示绿色蛋白质的图像,然后只显示红色蛋白质,然后是“合并”显示两种蛋白质的存在位置。合并最终在只有蛋白质 1 的情况下显示大部分为绿色,在只有蛋白质 2 的情况下大部分显示为红色,在它们都在的情况下显示为黄色,并且您可以看到在恒定蛋白质 1 的背景中蛋白质 2 水平增加的梯度等. 我想用 ggplot 做同样的事情,x 和 y 轴显示两个测量的位置,颜色的强度表示测量的大小。在随附的示例中,测量值 1 和 2 在大多数 x 和 y 坐标上相似,但测量值 1 从 y 轴 50 到 100 稍高,而测量值 2 从 y 轴 75 到 125 稍高一些。在我的示例中, graph1 给了我我想要的东西(尽管是蓝色而不是红色),但随后我展示了一个不成功的“graph2”,其中测量 2 只是覆盖了测量 1。
我希望通过附加的脚本,这个令人困惑的问题变得更加清晰。谁能告诉我如何对两种不同颜色进行所需的合并(理想情况下一种颜色为红色,另一种颜色为绿色)? (也欢迎对我创建数据框的有点丑陋的方式提出建设性的批评。)
谢谢。
埃里克
enter code here
# merging two different colors with ggplot2 geom_point plot
library(tidyverse)
set.seed(8)
x <- seq(1,100)
y <- seq(1,250)
z <- integer(length(x) * length(y))
df <- data.frame('x_coordinate' = rep(x, times = length(y)),
'y_coordinate' = rep(y, each = length(x)),
'z_coordinate1' = z,
'z_coordinate2' = z)
df[,3] <- sample(1:100, length(df[,3]), replace = TRUE)
df[,4] <- sample(1:100, length(df[,3]), replace = TRUE)
for (i in 1:100) {
df[df[,1] == i & df[,2] > 50 & df[,2] <= 100,3] <- sample(25:125, 50)
df[df[,1] == i & df[,2] > 75 & df[,2] <= 125,4] <- sample(25:125, 50)
}
# graph 1:
ggplot(data = df,
mapping = aes(x = x_coordinate, y = y_coordinate, color = z_coordinate1)) +
geom_point(size = 0.2)
# unsuccessful graph2:
ggplot(data = df,
mapping = aes(x = x_coordinate, y = y_coordinate, color = z_coordinate1)) +
geom_point(size = 0.2) +
geom_point(data = df,
mapping = aes(x = x_coordinate, y = y_coordinate, color = z_coordinate2),
size = 0.2)
【问题讨论】: