R 在ggplot2中将类别和映射到美学

R 在ggplot2中将类别和映射到美学,r,ggplot2,R,Ggplot2,我有数据,包括几个样本,两个条件的组合,以及这些条件的结果,在这种情况下是真阳性和假阳性的数量 我想出的最好的显示方法是叠加点图。以下是单个样本的结果,基本上符合我的要求: 现在,我想做的是对所有样本的总真阳性和假阳性进行求和,并以完全相同的方式绘制它们。当我尝试时,每个样本的所有点都叠在一起,而不是求和并绘制在一起,如下图所示: (注意斗牛场模式,每个点应该只有2个圆。) 下面是一些相同形式的小样本数据,以及我使用stat_sum()尝试的方法: require(dplyr) 示例在使用d

我有数据,包括几个样本,两个条件的组合,以及这些条件的结果,在这种情况下是真阳性和假阳性的数量

我想出的最好的显示方法是叠加点图。以下是单个样本的结果,基本上符合我的要求:

现在,我想做的是对所有样本的总真阳性和假阳性进行求和,并以完全相同的方式绘制它们。当我尝试时,每个样本的所有点都叠在一起,而不是求和并绘制在一起,如下图所示:

(注意斗牛场模式,每个点应该只有2个圆。)

下面是一些相同形式的小样本数据,以及我使用stat_sum()尝试的方法:

require(dplyr)

示例在使用dplyr的group_by()和SUMMARY()进行绘图之前转换数据集的工作:

require(dplyr)
分组数据
require(dplyr)

samples <- c(rep("Sample 1", 4), rep("Sample 2", 4), rep("Sample 3", 4))
cond1 <- c("A", "A", "B", "B")
cond2 <- rep(c("X", "Y"))

data <- as.data.frame(cbind(samples, cond1, cond2))
data$true <- sample(30, length(data$samples))
data$false <- sample(20, length(data$samples))

data <- gather(data, type, hits, true, false)

#The good single-sample version
ggplot(filter(data, sample == "Sample 1"), aes(
    x = cond1, y = cond2, size = hits, color = type)) +
  geom_point(alpha = 0.2) +
  scale_size_area(max_size = 20)

#Trying stat_sum() across hits
ggplot(data, aes(x = cond1, y = cond2, size = hits, color = type)) +
  stat_sum(aes(group = hits), alpha =0.2) +
  scale_size_area(max_size = 20)

#Trying stat_sum() weighting by hits
ggplot(data, aes(x = cond1, y = cond2, size = hits, color = type)) +
  stat_sum(aes(group = 1, weight = hits), alpha =0.2) +
  scale_size_area(max_size = 20)
require(dplyr)
grouped_data <- group_by(data, cond1, cond2, type)
summarize(grouped_data, hits = sum(hits))

ggplot(grouped_data, aes(x = cond1, y = cond2, size = hits, color = type)) +
geom_point(alpha = 0.2) +
scale_size_area(max_size = 20)