ggjoy facet with ggtree
是否可以将joyplot作为面板添加到包含ggtree的图中,如these examples所示?喜悦图的例子是here。ggjoy facet with ggtree
我意识到我可以手动将joyplot的物种标签按照树尖标签的顺序放置,但我正在寻找自动解决方案。我想自动将joyplot行与树的提示相关联,类似于boxplot数据如何与提示标签相关联。
我认为Guangchuang瑜在上面的链接示例提供合适的数据:
require(ggtree)
require(ggstance)
# generate tree
tr <- rtree(30)
# create simple ggtree object with tip labels
p <- ggtree(tr) + geom_tiplab(offset = 0.02)
# Generate categorical data for each "species"
d1 <- data.frame(id=tr$tip.label, location=sample(c("GZ", "HK", "CZ"), 30, replace=TRUE))
#Plot the categorical data as colored points on the tree tips
p1 <- p %<+% d1 + geom_tippoint(aes(color=location))
# Generate distribution of points for each species
d4 = data.frame(id=rep(tr$tip.label, each=20),
val=as.vector(sapply(1:30, function(i)
rnorm(20, mean=i)))
)
# Create panel with boxplot of the d4 data
p4 <- facet_plot(p1, panel="Boxplot", data=d4, geom_boxploth,
mapping = aes(x=val, group=label, color=location))
plot(p4)
是否有可能到位箱线图的创建joyplot?
这里是演示数据集D4的上方快速joyplot代码:
require(ggjoy)
ggplot(d4, aes(x = val, y = id)) +
geom_joy(scale = 2, rel_min_height=0.03) +
scale_y_discrete(expand = c(0.01, 0)) + theme_joy()
我是新来GGPLOT2,ggtree和ggjoy所以我完全是在如何甚至开始这样做的损失。
注意:截至2017年9月14日,ggjoy
package has been deprecated。相反,请使用ggridges
package。对于下面的代码与ggridges
一起使用,请使用geom_density_ridges
而不是geom_joy
。
看起来你可以geom_joy
在facet_plot
只需更换geom_boxplot
:
facet_plot(p1, panel="Joy Plot", data=d4, geom_joy,
mapping = aes(x=val, group=label, fill=location), colour="grey50", lwd=0.3)
如果你是新的作者,以GGPLOT2,the visualization chapter of Data Science with R(一个开源的书ggplot2)应该有助于学习基础知识。
ggjoy
和ggtree
扩展了ggplot2的功能。当这样的扩展很好地完成时,“显而易见的”事情(就通常的ggplot“图形语法”而言)经常起作用,因为扩展包是以一种试图忠实于基本ggplot2方法的方式编写的。
在这里,我的第一个想法是用geom_joy
代替geom_boxplot
,结果证明完成了这项工作。每个geom
只是将数据可视化的一种不同方式,在这种情况下,框图对比密度图。但是情节的所有其他“结构”都保持不变,所以你可以改变几何,并得到一个遵循相同的轴顺序,颜色映射等的新的情节。一旦你获得了一些经验,这将更有意义。 ggplot2图形文法。
下面是左手情节略有不同的标记方法:
p1 = ggtree(tr) %<+% d1 +
geom_tippoint(aes(color=location), size=6) +
geom_tiplab(offset=-0.01, hjust=0.5, colour="white", size=3.2, fontface="bold")
facet_plot(p1, panel="Joy Plot", data=d4, geom_joy,
mapping = aes(x=val, group=label, fill=location), colour="grey40", lwd=0.3)
UPDATE:这是在响应您的意见,询问如何获得相同的自定义颜色都刻面板。这里的代码,这样做与你的问题示例数据:
p1 = ggtree(tr) %<+% d1 +
geom_tippoint(aes(color=location), size=5) +
geom_tiplab(offset=-0.01, hjust=0.5, colour="white", size=3, fontface="bold") +
scale_colour_manual(values = c("grey", "red3", "blue")) +
scale_fill_manual(values = c("grey", "red3", "blue"))
facet_plot(p1, panel="Joy Plot", data=d4, geom_joy,
mapping = aes(x=val, group=label, fill=location), colour="grey40", lwd=0.3)
非常感谢!我该如何设置一个自定义色阶并使其延续到joyplot?我有一个包含geom_tippoint()的二进制类的树;我可以使用'+ scale_colour_manual(values = c(“no”=“gray”,“yes”=“red3”))来选择颜色,但我无法弄清楚如何使颜色方案延伸到joyplot 。如果我使用scale_colour_manual(),则会出现“颜色比例”错误,并为'颜色'添加另一个比例尺,它将替换现有比例尺。“但joyplot保持默认颜色。 – LCM
将'scale_fill_manual(values = c(“no”=“gray”,“yes”=“red3”))'添加到初始绘图,并在您执行'facet_plot'时执行。 'geom_joy'使用'fill'美学,所以你需要用'scale_fill_manual'设置填充颜色,而不是'scale_colour_manual'。只需使用'colour'和'fill'的相同颜色,并在绘制小平面时匹配。 “尺度”(颜色比例,形状比例,轴线范围和中断等)是ggplot2中体现的“图形语法”的另一个方面。 – eipi10
当我这样做时,我得到喜欢的颜色(灰色和红色)的喜悦,但不是树尖。我现在没有一个可重复的例子,但是可以从语法中知道:'baseplot LCM
你能提供一些合适的样本数据一起工作呢?粘贴到你的问题'dput(data_sample)' – eipi10
@ eipi10的输出我已经添加了一些由ggtree包的创建者编写的演示代码。我不知道'dput(data_sample)'指的是什么' – LCM