在 VennDiagram 中强制标签位于左侧
Force label to the left in VennDiagram
我正在尝试使用 R VennDiagram 包 (v 1.6.20) 生成维恩图,函数为 draw.pairwise.venn,其中:
我有两个类别 "Method_1" 和 "Method_2"(因此 draw.pairwise.venn)
对于 Method_2,其所有标签都包含在 Method_1.
中
我的问题是,在绘制维恩图时,特定于 Method_1 的标签显示在维恩图的右侧,这很令人困惑,因为如果您不注意颜色,您可能认为它们对应于 Method_2 个标签。 See figure 1
Ps : 切换类别(将 Method_1 放在右边)不是一个选项,因为在这项研究中我们制作了许多维恩图并希望左边总是 Method_1,右边总是 Method_2。
图 1 的代码:
M1 <- c("toto", "tata", "titi")
M2 <- "toto"
if (all(M2 %in% M1)) {
v <- draw.pairwise.venn(
area1 = 100,
area2 = 35,
cross.area = 35,
category = c("Method_1", "Method_2"),
fill = c("navajowhite", "lightskyblue1"),
lty = "blank",
cex = 1.1,
cat.cex = 2.1,
cat.dist = c(0.03, 0.112),
cat.pos = c(330, 30),
margin = 0.04,
cat.col = c("sienna4", "darkblue")
)
v[[5]]$label <- paste(intersect(M1, M2), collapse = "\n")
v[[6]]$label <- paste(setdiff(M1, M2), collapse = "\n")
grid.newpage()
grid.draw(v)
}
我确实尝试用 $hjust 和 $just 玩弄维恩右侧的标签。
$hjust 的行为与预期一致,但 $just 并非如此。 See figure 2
> str(v[[6]])
List of 11
$ label : chr "tata\ntiti"
$ x : 'unit' num 0.828npc
..- attr(,
"valid.unit")= int 0
..- attr(, "unit")= chr "npc"
$ y
: 'unit' num 0.5npc
..- attr(, "valid.unit")= int 0
..-
attr(, "unit")= chr "npc"
$ just : chr "centre"
$
hjust : NULL
$ vjust : NULL
$ rot :
num 0
$ check.overlap: logi FALSE
$ name : chr
"GRID.text.431"
$ gp :List of 5
..$ col :
chr "black"
..$ cex : num 1.1
..$ fontface : chr
"plain"
..$ fontfamily: chr "serif"
..$ font :
Named int 1
.. ..- attr(, "names")= chr "plain"
..-
attr(, "class")= chr "gpar"
$ vp : NULL
- attr(*, "class")= chr [1:3] "text" "grob" "gDesc"
图 2 的更新:
v[[6]]$hjust <- 17 # Default = NULL
v[[6]]$just <- "left" # Default = "centre"
grid.newpage()
grid.draw(v)
如何为 Method_1 标签强制 "good" 左对齐?
just
和 hjust
做的基本一样。如果我理解正确,您想独立于理由更改标签的位置。您可以使用 x
变量来做到这一点:
M1 <- c("toto", "tata", "titi")
M2 <- "toto"
if (all(M2 %in% M1)) {
v <- draw.pairwise.venn(
area1 = 100,
area2 = 35,
cross.area = 35,
category = c("Method_1", "Method_2"),
fill = c("navajowhite", "lightskyblue1"),
lty = "blank",
cex = 1.1,
cat.cex = 2.1,
cat.dist = c(0.03, 0.112),
cat.pos = c(330, 30),
margin = 0.04,
cat.col = c("sienna4", "darkblue")
)
v[[5]]$label <- paste(intersect(M1, M2), collapse = "\n")
v[[6]]$label <- paste(setdiff(M1, M2), collapse = "\n")
v[[6]]$just <- "left"
v[[6]]$x <- unit(0.15, 'npc')
grid.newpage()
grid.draw(v)
}
您可以更改或删除行 v[[6]]$just <- "left"
以在 v[[6]]
中实现您想要的相对分布。
我正在尝试使用 R VennDiagram 包 (v 1.6.20) 生成维恩图,函数为 draw.pairwise.venn,其中:
我有两个类别 "Method_1" 和 "Method_2"(因此 draw.pairwise.venn)
对于 Method_2,其所有标签都包含在 Method_1.
我的问题是,在绘制维恩图时,特定于 Method_1 的标签显示在维恩图的右侧,这很令人困惑,因为如果您不注意颜色,您可能认为它们对应于 Method_2 个标签。 See figure 1
Ps : 切换类别(将 Method_1 放在右边)不是一个选项,因为在这项研究中我们制作了许多维恩图并希望左边总是 Method_1,右边总是 Method_2。
图 1 的代码:
M1 <- c("toto", "tata", "titi")
M2 <- "toto"
if (all(M2 %in% M1)) {
v <- draw.pairwise.venn(
area1 = 100,
area2 = 35,
cross.area = 35,
category = c("Method_1", "Method_2"),
fill = c("navajowhite", "lightskyblue1"),
lty = "blank",
cex = 1.1,
cat.cex = 2.1,
cat.dist = c(0.03, 0.112),
cat.pos = c(330, 30),
margin = 0.04,
cat.col = c("sienna4", "darkblue")
)
v[[5]]$label <- paste(intersect(M1, M2), collapse = "\n")
v[[6]]$label <- paste(setdiff(M1, M2), collapse = "\n")
grid.newpage()
grid.draw(v)
}
我确实尝试用 $hjust 和 $just 玩弄维恩右侧的标签。
$hjust 的行为与预期一致,但 $just 并非如此。 See figure 2
> str(v[[6]])
List of 11
$ label : chr "tata\ntiti"
$ x : 'unit' num 0.828npc
..- attr(, "valid.unit")= int 0
..- attr(, "unit")= chr "npc"
$ y
: 'unit' num 0.5npc
..- attr(, "valid.unit")= int 0
..- attr(, "unit")= chr "npc"
$ just : chr "centre"
$ hjust : NULL
$ vjust : NULL
$ rot : num 0
$ check.overlap: logi FALSE
$ name : chr "GRID.text.431"
$ gp :List of 5
..$ col : chr "black"
..$ cex : num 1.1
..$ fontface : chr "plain"
..$ fontfamily: chr "serif"
..$ font : Named int 1
.. ..- attr(, "names")= chr "plain"
..- attr(, "class")= chr "gpar"
$ vp : NULL
- attr(*, "class")= chr [1:3] "text" "grob" "gDesc"
图 2 的更新:
v[[6]]$hjust <- 17 # Default = NULL
v[[6]]$just <- "left" # Default = "centre"
grid.newpage()
grid.draw(v)
如何为 Method_1 标签强制 "good" 左对齐?
just
和 hjust
做的基本一样。如果我理解正确,您想独立于理由更改标签的位置。您可以使用 x
变量来做到这一点:
M1 <- c("toto", "tata", "titi")
M2 <- "toto"
if (all(M2 %in% M1)) {
v <- draw.pairwise.venn(
area1 = 100,
area2 = 35,
cross.area = 35,
category = c("Method_1", "Method_2"),
fill = c("navajowhite", "lightskyblue1"),
lty = "blank",
cex = 1.1,
cat.cex = 2.1,
cat.dist = c(0.03, 0.112),
cat.pos = c(330, 30),
margin = 0.04,
cat.col = c("sienna4", "darkblue")
)
v[[5]]$label <- paste(intersect(M1, M2), collapse = "\n")
v[[6]]$label <- paste(setdiff(M1, M2), collapse = "\n")
v[[6]]$just <- "left"
v[[6]]$x <- unit(0.15, 'npc')
grid.newpage()
grid.draw(v)
}
您可以更改或删除行 v[[6]]$just <- "left"
以在 v[[6]]
中实现您想要的相对分布。