ggtree::facet_plot - 第二个面板使用第一个面板的 xlim 参数
ggtree::facet_plot - Second panel uses xlim parameter from first one
我对许多用树分层结构的属进行了统计测试,所以我对树中的每个属都有一个 p 值。
我想在面板图中可视化树和 p 值,因为可以使用 ggtree。
包和树数据:
library(ape)
# source("https://bioconductor.org/biocLite.R"); biocLite("ggtree")
library(ggtree)
tree <- structure(list(
edge = structure(c(102L, 103L, 104L, 105L, 106L,
107L, 103L, 108L, 109L, 110L, 111L, 111L, 109L, 112L, 113L, 109L,
114L, 115L, 115L, 115L, 115L, 115L, 115L, 114L, 116L, 109L, 117L,
118L, 108L, 119L, 120L, 121L, 119L, 122L, 123L, 123L, 108L, 124L,
125L, 126L, 125L, 127L, 127L, 108L, 128L, 129L, 130L, 130L, 129L,
131L, 103L, 132L, 133L, 134L, 135L, 134L, 136L, 136L, 134L, 137L,
137L, 134L, 138L, 138L, 134L, 139L, 139L, 134L, 140L, 134L, 141L,
141L, 103L, 142L, 143L, 144L, 145L, 103L, 146L, 147L, 148L, 149L,
146L, 150L, 151L, 152L, 103L, 153L, 154L, 155L, 156L, 153L, 157L,
158L, 159L, 159L, 159L, 159L, 159L, 157L, 160L, 161L, 160L, 162L,
103L, 163L, 164L, 165L, 166L, 165L, 167L, 167L, 165L, 168L, 168L,
165L, 169L, 164L, 170L, 171L, 170L, 172L, 163L, 173L, 174L, 175L,
175L, 175L, 173L, 176L, 177L, 177L, 177L, 173L, 178L, 179L, 179L,
163L, 180L, 181L, 182L, 181L, 183L, 183L, 183L, 181L, 184L, 184L,
184L, 184L, 184L, 184L, 184L, 184L, 184L, 184L, 181L, 185L, 185L,
185L, 181L, 186L, 181L, 187L, 187L, 181L, 188L, 188L, 188L, 188L,
188L, 163L, 189L, 190L, 191L, 191L, 163L, 192L, 193L, 194L, 194L,
194L, 194L, 194L, 194L, 194L, 103L, 195L, 196L, 197L, 198L, 196L,
199L, 200L, 103L, 201L, 202L, 203L, 204L, 204L, 102L, 205L, 206L,
207L, 208L, 209L, 206L, 210L, 211L, 212L, 206L, 213L, 214L, 215L,
103L, 104L, 105L, 106L, 107L, 1L, 108L, 109L, 110L, 111L, 2L,
3L, 112L, 113L, 4L, 114L, 115L, 5L, 6L, 7L, 8L, 9L, 10L, 116L,
11L, 117L, 118L, 12L, 119L, 120L, 121L, 13L, 122L, 123L, 14L,
15L, 124L, 125L, 126L, 16L, 127L, 17L, 18L, 128L, 129L, 130L,
19L, 20L, 131L, 21L, 132L, 133L, 134L, 135L, 22L, 136L, 23L,
24L, 137L, 25L, 26L, 138L, 27L, 28L, 139L, 29L, 30L, 140L, 31L,
141L, 32L, 33L, 142L, 143L, 144L, 145L, 34L, 146L, 147L, 148L,
149L, 35L, 150L, 151L, 152L, 36L, 153L, 154L, 155L, 156L, 37L,
157L, 158L, 159L, 38L, 39L, 40L, 41L, 42L, 160L, 161L, 43L, 162L,
44L, 163L, 164L, 165L, 166L, 45L, 167L, 46L, 47L, 168L, 48L,
49L, 169L, 50L, 170L, 171L, 51L, 172L, 52L, 173L, 174L, 175L,
53L, 54L, 55L, 176L, 177L, 56L, 57L, 58L, 178L, 179L, 59L, 60L,
180L, 181L, 182L, 61L, 183L, 62L, 63L, 64L, 184L, 65L, 66L, 67L,
68L, 69L, 70L, 71L, 72L, 73L, 74L, 185L, 75L, 76L, 77L, 186L,
78L, 187L, 79L, 80L, 188L, 81L, 82L, 83L, 84L, 85L, 189L, 190L,
191L, 86L, 87L, 192L, 193L, 194L, 88L, 89L, 90L, 91L, 92L, 93L,
94L, 195L, 196L, 197L, 198L, 95L, 199L, 200L, 96L, 201L, 202L,
203L, 204L, 97L, 98L, 205L, 206L, 207L, 208L, 209L, 99L, 210L,
211L, 212L, 100L, 213L, 214L, 215L, 101L), .Dim = c(214L, 2L)),
edge.length = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
Nnode = 114L,
tip.label = c("Brachyspira",
"Haemophilus", "Aggregatibacter", "Acinetobacter", "Klebsiella",
"Salmonella", "Escherichia", "Enterobacter", "Shigella",
"Citrobacter", "Hafnia", "Succinatimonas", "Corallococcus",
"Bilophila", "Desulfovibrio", "Azospirillum", "Acidiphilium",
"Acetobacter", "Sutterella", "Parasutterella", "Oxalobacter",
"Porphyromonas", "Paraprevotella", "Prevotella", "Alistipes",
"Rikenella", "Tannerella", "Parabacteroides", "Odoribacter",
"Butyricimonas", "Bacteroides", "Coprobacter", "Barnesiella",
"Fusobacterium", "Coraliomargarita", "Akkermansia", "Bifidobacterium",
"Gordonibacter", "Eggerthella", "Cryptobacterium", "Adlercreutzia",
"Enterorhabdus", "Collinsella", "Olsenella", "Lactobacillus",
"Weissella", "Oenococcus", "Lactococcus", "Streptococcus",
"Enterococcus", "Staphylococcus", "Bacillus", "Dialister",
"Veillonella", "Megasphaera", "Megamonas", "Mitsuokella",
"Selenomonas", "Phascolarctobacterium", "Acidaminococcus",
"Oscillibacter", "Intestinibacter", "Peptoclostridium", "Peptostreptococcus",
"Dorea", "Roseburia", "Anaerostipes", "Tyzzerella", "Coprococcus",
"Blautia", "Butyrivibrio", "Marvinbryantia", "Lachnoclostridium",
"Oribacterium", "Flavonifractor", "Intestinimonas", "Pseudoflavonifractor",
"Eubacterium", "Clostridium", "Butyricicoccus", "Faecalibacterium",
"Ruminococcus", "Anaerotruncus", "Subdoligranulum", "Ruminiclostridium",
"Parvimonas", "Peptoniphilus", "Catenibacterium", "Solobacterium",
"Coprobacillus", "Holdemania", "Erysipelatoclostridium",
"Turicibacter", "Stoquefichus", "Mycoplasma", "Acholeplasma",
"Pyramidobacter", "Synergistes", "Methanobrevibacter", "Methanomethylophilus",
"Methanoculleus"), root.edge = 1),
.Names = c("edge", "edge.length",
"Nnode", "tip.label", "root.edge"), class = "phylo", order = "cladewise"
)
代码:
df <- data.frame(id = tree$tip.label, p = runif(length(tree$tip.label)))
p1 <- ggtree(tree) +
geom_tiplab()
facet_plot(p1, panel = "p-value", data = df, geom = geom_point, aes(x = p))
但是在这里,属的名称被截断了,所以我修改了 xlim
参数以完全查看它们。
p2 <-
ggtree(tree) +
geom_tiplab() +
xlim(c(0,7))
facet_plot(p2, panel = "p-value", data = df, geom = geom_point, aes(x = p))
有效!但是,xlim
传播到第二个面板...我该如何解决?
我试图在 facet_plot()
中添加 xlim(0:1)
或 xlim = 0:1
但那不起作用...
在 F.Privé 回答后编辑:
我需要将标签保留在分支的右侧,因为我必须在它们上面添加一些 labels/statistics。我希望它们左对齐。
你可以玩玩hjust
和offset
参数(虽然我不太明白):
p2 <-
ggtree(tree) +
geom_tiplab(hjust = 1, offset = 8)
facet_plot(p2, panel = "p-value", data = df, geom = geom_point, aes(x = p))
ggtree
专门为此目的提供了 xlim_expand
函数。
您需要指定限制和要应用它的面板。在你的情况下,你想将它应用到 Tree
面板:
p1 <- ggtree(tree) +
geom_tiplab(size = 2) +
xlim_expand(c(0,15), panel = "Tree")
facet_plot(p1, panel = "p-value", data = df, geom = geom_point, aes(x = p))
我夸大了示例的限制,但您可以根据自己的喜好进行调整。
我对许多用树分层结构的属进行了统计测试,所以我对树中的每个属都有一个 p 值。
我想在面板图中可视化树和 p 值,因为可以使用 ggtree。
包和树数据:
library(ape)
# source("https://bioconductor.org/biocLite.R"); biocLite("ggtree")
library(ggtree)
tree <- structure(list(
edge = structure(c(102L, 103L, 104L, 105L, 106L,
107L, 103L, 108L, 109L, 110L, 111L, 111L, 109L, 112L, 113L, 109L,
114L, 115L, 115L, 115L, 115L, 115L, 115L, 114L, 116L, 109L, 117L,
118L, 108L, 119L, 120L, 121L, 119L, 122L, 123L, 123L, 108L, 124L,
125L, 126L, 125L, 127L, 127L, 108L, 128L, 129L, 130L, 130L, 129L,
131L, 103L, 132L, 133L, 134L, 135L, 134L, 136L, 136L, 134L, 137L,
137L, 134L, 138L, 138L, 134L, 139L, 139L, 134L, 140L, 134L, 141L,
141L, 103L, 142L, 143L, 144L, 145L, 103L, 146L, 147L, 148L, 149L,
146L, 150L, 151L, 152L, 103L, 153L, 154L, 155L, 156L, 153L, 157L,
158L, 159L, 159L, 159L, 159L, 159L, 157L, 160L, 161L, 160L, 162L,
103L, 163L, 164L, 165L, 166L, 165L, 167L, 167L, 165L, 168L, 168L,
165L, 169L, 164L, 170L, 171L, 170L, 172L, 163L, 173L, 174L, 175L,
175L, 175L, 173L, 176L, 177L, 177L, 177L, 173L, 178L, 179L, 179L,
163L, 180L, 181L, 182L, 181L, 183L, 183L, 183L, 181L, 184L, 184L,
184L, 184L, 184L, 184L, 184L, 184L, 184L, 184L, 181L, 185L, 185L,
185L, 181L, 186L, 181L, 187L, 187L, 181L, 188L, 188L, 188L, 188L,
188L, 163L, 189L, 190L, 191L, 191L, 163L, 192L, 193L, 194L, 194L,
194L, 194L, 194L, 194L, 194L, 103L, 195L, 196L, 197L, 198L, 196L,
199L, 200L, 103L, 201L, 202L, 203L, 204L, 204L, 102L, 205L, 206L,
207L, 208L, 209L, 206L, 210L, 211L, 212L, 206L, 213L, 214L, 215L,
103L, 104L, 105L, 106L, 107L, 1L, 108L, 109L, 110L, 111L, 2L,
3L, 112L, 113L, 4L, 114L, 115L, 5L, 6L, 7L, 8L, 9L, 10L, 116L,
11L, 117L, 118L, 12L, 119L, 120L, 121L, 13L, 122L, 123L, 14L,
15L, 124L, 125L, 126L, 16L, 127L, 17L, 18L, 128L, 129L, 130L,
19L, 20L, 131L, 21L, 132L, 133L, 134L, 135L, 22L, 136L, 23L,
24L, 137L, 25L, 26L, 138L, 27L, 28L, 139L, 29L, 30L, 140L, 31L,
141L, 32L, 33L, 142L, 143L, 144L, 145L, 34L, 146L, 147L, 148L,
149L, 35L, 150L, 151L, 152L, 36L, 153L, 154L, 155L, 156L, 37L,
157L, 158L, 159L, 38L, 39L, 40L, 41L, 42L, 160L, 161L, 43L, 162L,
44L, 163L, 164L, 165L, 166L, 45L, 167L, 46L, 47L, 168L, 48L,
49L, 169L, 50L, 170L, 171L, 51L, 172L, 52L, 173L, 174L, 175L,
53L, 54L, 55L, 176L, 177L, 56L, 57L, 58L, 178L, 179L, 59L, 60L,
180L, 181L, 182L, 61L, 183L, 62L, 63L, 64L, 184L, 65L, 66L, 67L,
68L, 69L, 70L, 71L, 72L, 73L, 74L, 185L, 75L, 76L, 77L, 186L,
78L, 187L, 79L, 80L, 188L, 81L, 82L, 83L, 84L, 85L, 189L, 190L,
191L, 86L, 87L, 192L, 193L, 194L, 88L, 89L, 90L, 91L, 92L, 93L,
94L, 195L, 196L, 197L, 198L, 95L, 199L, 200L, 96L, 201L, 202L,
203L, 204L, 97L, 98L, 205L, 206L, 207L, 208L, 209L, 99L, 210L,
211L, 212L, 100L, 213L, 214L, 215L, 101L), .Dim = c(214L, 2L)),
edge.length = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
Nnode = 114L,
tip.label = c("Brachyspira",
"Haemophilus", "Aggregatibacter", "Acinetobacter", "Klebsiella",
"Salmonella", "Escherichia", "Enterobacter", "Shigella",
"Citrobacter", "Hafnia", "Succinatimonas", "Corallococcus",
"Bilophila", "Desulfovibrio", "Azospirillum", "Acidiphilium",
"Acetobacter", "Sutterella", "Parasutterella", "Oxalobacter",
"Porphyromonas", "Paraprevotella", "Prevotella", "Alistipes",
"Rikenella", "Tannerella", "Parabacteroides", "Odoribacter",
"Butyricimonas", "Bacteroides", "Coprobacter", "Barnesiella",
"Fusobacterium", "Coraliomargarita", "Akkermansia", "Bifidobacterium",
"Gordonibacter", "Eggerthella", "Cryptobacterium", "Adlercreutzia",
"Enterorhabdus", "Collinsella", "Olsenella", "Lactobacillus",
"Weissella", "Oenococcus", "Lactococcus", "Streptococcus",
"Enterococcus", "Staphylococcus", "Bacillus", "Dialister",
"Veillonella", "Megasphaera", "Megamonas", "Mitsuokella",
"Selenomonas", "Phascolarctobacterium", "Acidaminococcus",
"Oscillibacter", "Intestinibacter", "Peptoclostridium", "Peptostreptococcus",
"Dorea", "Roseburia", "Anaerostipes", "Tyzzerella", "Coprococcus",
"Blautia", "Butyrivibrio", "Marvinbryantia", "Lachnoclostridium",
"Oribacterium", "Flavonifractor", "Intestinimonas", "Pseudoflavonifractor",
"Eubacterium", "Clostridium", "Butyricicoccus", "Faecalibacterium",
"Ruminococcus", "Anaerotruncus", "Subdoligranulum", "Ruminiclostridium",
"Parvimonas", "Peptoniphilus", "Catenibacterium", "Solobacterium",
"Coprobacillus", "Holdemania", "Erysipelatoclostridium",
"Turicibacter", "Stoquefichus", "Mycoplasma", "Acholeplasma",
"Pyramidobacter", "Synergistes", "Methanobrevibacter", "Methanomethylophilus",
"Methanoculleus"), root.edge = 1),
.Names = c("edge", "edge.length",
"Nnode", "tip.label", "root.edge"), class = "phylo", order = "cladewise"
)
代码:
df <- data.frame(id = tree$tip.label, p = runif(length(tree$tip.label)))
p1 <- ggtree(tree) +
geom_tiplab()
facet_plot(p1, panel = "p-value", data = df, geom = geom_point, aes(x = p))
但是在这里,属的名称被截断了,所以我修改了 xlim
参数以完全查看它们。
p2 <-
ggtree(tree) +
geom_tiplab() +
xlim(c(0,7))
facet_plot(p2, panel = "p-value", data = df, geom = geom_point, aes(x = p))
有效!但是,xlim
传播到第二个面板...我该如何解决?
我试图在 facet_plot()
中添加 xlim(0:1)
或 xlim = 0:1
但那不起作用...
在 F.Privé 回答后编辑:
我需要将标签保留在分支的右侧,因为我必须在它们上面添加一些 labels/statistics。我希望它们左对齐。
你可以玩玩hjust
和offset
参数(虽然我不太明白):
p2 <-
ggtree(tree) +
geom_tiplab(hjust = 1, offset = 8)
facet_plot(p2, panel = "p-value", data = df, geom = geom_point, aes(x = p))
ggtree
专门为此目的提供了 xlim_expand
函数。
您需要指定限制和要应用它的面板。在你的情况下,你想将它应用到 Tree
面板:
p1 <- ggtree(tree) +
geom_tiplab(size = 2) +
xlim_expand(c(0,15), panel = "Tree")
facet_plot(p1, panel = "p-value", data = df, geom = geom_point, aes(x = p))
我夸大了示例的限制,但您可以根据自己的喜好进行调整。