覆盖 VennDiagram 包的总和值
Overriding the sum values for the VennDiagram package
我有一个看起来像这样的数据集:
ID X Y Z
1 T1 10 0 10
2 T2 0 0 20
3 T3 10 10 40
4 T4 0 30 10
5 T5 0 10 0
...
我可以使用 reshape2 分解数据并将其放入 VennDiagram 包中以可视化数据集的交集。但。我只能可视化计数(不是总计)。
VennDiagram 只会将 T1 识别为“1”XZ 交叉点。我希望包裹数为“20”。对于 T3,它不应该只是 XYZ 的“1”计数,我希望它总和为“60”。
维恩图手册:cran.r.project.org
提前致谢!
编辑:
输出应该是这样的...
nrows 将总数加在一起[=13=]
(当前输出将只获取计数)
grid.newpage()
draw.triple.venn(area1 = nrow(subset(accounts, X > 1)),
area2 = nrow(subset(accounts, Y > 1)),
area3 = nrow(subset(accounts, Z > 1)),
n12 = nrow(subset(accounts, X > 1 & Y > 1)),
n23 = nrow(subset(accounts, Y > 1 & Z > 1)),
n13 = nrow(subset(accounts, X > 1 & Z > 1)),
n123 = nrow(subset(accounts, X > 1 & Y > 1 & Z > 1)),
category = c("X", "Y", "Z"),
lty = "blank",
fill = c("pink1","mediumorchid","skyblue"))
我认为您想使用 sum
而不是 nrow
。此外,您将希望在子集上观察您的逻辑,并可能向 n12
、n23
和 n23
.
添加条件
例如,对于 n23
,您将需要:Y > 1 & Z > 1 & X < 1
-- 注意添加的 X < 1
。这应该更接近您所追求的:
draw.triple.venn(area1 = sum(subset(accounts, X > 1)),
area2 = sum(subset(accounts, Y > 1)),
area3 = sum(subset(accounts, Z > 1)),
n12 = sum(subset(accounts, X > 1 & Y > 1 & Z < 1)),
n23 = sum(subset(accounts, Y > 1 & Z > 1 & X < 1)),
n13 = sum(subset(accounts, X > 1 & Z > 1 & Y < 1)),
n123 = sum(subset(accounts, X > 1 & Y > 1 & Z > 1)),
category = c("X", "Y", "Z"),
lty = "blank",
fill = c("pink1","mediumorchid","skyblue"))
library(VennDiagram)
包的行为与您预期的不同。
您可能有 table:
A1 A2 Overlap
1 1 2
并且您希望两个维恩图在左圆中反映 1
,在右圆中反映 1
,在重叠部分反映 2
。
运行 这段代码:
grid.newpage()
draw.pairwise.venn(area1 = 1,
area2 = 1,
cross.area = 2)
将产生:
Error in draw.pairwise.venn(area1 = 1, area2 = 1, cross.area = 2) :
Impossible: cross section area too large.
所以我们必须通过在每个区域添加重叠来欺骗维恩图库。这样我们就会得到想要的:1;2;1。
grid.newpage()
draw.pairwise.venn(area1 = 1 + 2,
area2 = 1 + 2,
cross.area = 2)
我有一个看起来像这样的数据集:
ID X Y Z
1 T1 10 0 10
2 T2 0 0 20
3 T3 10 10 40
4 T4 0 30 10
5 T5 0 10 0
...
我可以使用 reshape2 分解数据并将其放入 VennDiagram 包中以可视化数据集的交集。但。我只能可视化计数(不是总计)。
VennDiagram 只会将 T1 识别为“1”XZ 交叉点。我希望包裹数为“20”。对于 T3,它不应该只是 XYZ 的“1”计数,我希望它总和为“60”。
维恩图手册:cran.r.project.org
提前致谢!
编辑:
输出应该是这样的... nrows 将总数加在一起[=13=]
(当前输出将只获取计数)
grid.newpage()
draw.triple.venn(area1 = nrow(subset(accounts, X > 1)),
area2 = nrow(subset(accounts, Y > 1)),
area3 = nrow(subset(accounts, Z > 1)),
n12 = nrow(subset(accounts, X > 1 & Y > 1)),
n23 = nrow(subset(accounts, Y > 1 & Z > 1)),
n13 = nrow(subset(accounts, X > 1 & Z > 1)),
n123 = nrow(subset(accounts, X > 1 & Y > 1 & Z > 1)),
category = c("X", "Y", "Z"),
lty = "blank",
fill = c("pink1","mediumorchid","skyblue"))
我认为您想使用 sum
而不是 nrow
。此外,您将希望在子集上观察您的逻辑,并可能向 n12
、n23
和 n23
.
例如,对于 n23
,您将需要:Y > 1 & Z > 1 & X < 1
-- 注意添加的 X < 1
。这应该更接近您所追求的:
draw.triple.venn(area1 = sum(subset(accounts, X > 1)),
area2 = sum(subset(accounts, Y > 1)),
area3 = sum(subset(accounts, Z > 1)),
n12 = sum(subset(accounts, X > 1 & Y > 1 & Z < 1)),
n23 = sum(subset(accounts, Y > 1 & Z > 1 & X < 1)),
n13 = sum(subset(accounts, X > 1 & Z > 1 & Y < 1)),
n123 = sum(subset(accounts, X > 1 & Y > 1 & Z > 1)),
category = c("X", "Y", "Z"),
lty = "blank",
fill = c("pink1","mediumorchid","skyblue"))
library(VennDiagram)
包的行为与您预期的不同。
您可能有 table:
A1 A2 Overlap
1 1 2
并且您希望两个维恩图在左圆中反映 1
,在右圆中反映 1
,在重叠部分反映 2
。
运行 这段代码:
grid.newpage()
draw.pairwise.venn(area1 = 1,
area2 = 1,
cross.area = 2)
将产生:
Error in draw.pairwise.venn(area1 = 1, area2 = 1, cross.area = 2) :
Impossible: cross section area too large.
所以我们必须通过在每个区域添加重叠来欺骗维恩图库。这样我们就会得到想要的:1;2;1。
grid.newpage()
draw.pairwise.venn(area1 = 1 + 2,
area2 = 1 + 2,
cross.area = 2)