重新定位 ggtree 上的标签

Reposition the labels on ggtree

我正在尝试可视化我的 ggtree,但我似乎卡在了最后一步;将树标签从水平方向重新定位到垂直方向,使它们不重叠。如果我更改 geom_tiplab 函数上的 geom = "text",我得到了我想要的,但我的标签不再有颜色。数据集 here and here

这是可重复性的代码;请帮助

p1 <- ape::read.tree("Tert_aln.fasta_processed.fa.raxml.support")
temp1 = read.csv("Tert_Final_Mapping_File.csv", sep=";")
mycolors = c(brewer.pal(name="Set1", n = 9), brewer.pal(name="Paired", n = 12), brewer.pal(name="Dark2", n = 8))
p2 <- ggtree(p1, layout='circular') %<+% temp1 +
  geom_tippoint(
    mapping = aes(color = phylum),          # tip color by phyla. 
    size = 2,
    show.legend = FALSE) +
  scale_color_manual(values = mycolors) +
  geom_tiplab(                          # adds name of phyla to tip of its branch
    aes(fill = phylum),
    color = 'black',                      
    offset = 2,
    size = 3,
    geom = "label",
    align = TRUE,
    face = "bold",
    label.size = 0
    label.padding = unit(0.15, "lines"), # amount of padding around the labels
    linetype = "solid") +
  ggtitle("Phylogenetic tree of Tert")+  # title of your graph
  theme(
    axis.title.x = element_blank(), # removes x-axis title
    axis.title.y = element_blank(), # removes y-axis title
    legend.title = element_text(    # defines font size and format of the legend title
      face = "bold",
      size = 12),   
    legend.text=element_text(       # defines font size and format of the legend text
      face = "bold",
      size = 10),  
    plot.title = element_text(      # defines font size and format of the plot title
      size = 12,
      face = "bold"),  
    legend.position = "bottom",     # defines placement of the legend
    legend.box = "vertical",        # defines placement of the legend
    legend.margin = margin()) 
pdf("ggplot_Tert1.pdf", width = 20, height = 22)
p2
dev.off()

我注意到你写道你想要彩色标签,但你有 fill,这在这里没有任何作用。您也声明了 color = 'black'

对不起,如果我错过了标记!关于您想看到的内容,我正在使用我的最佳猜测。

为了实现这一点,我做了四件事:

    1. geom_tiplab()中,我fill = phylum更改为color = phylum
    1. geom_tiplab()中,我注释掉了color = 'black'
    1. geom_tiplab()中,我注释掉了label.size = 0
    1. geom_tiplab()中,我geom = "label"更改为geom = "text"

这是你想要的吗? (您将必须调整绘制的限制以使所有文本进入视觉对象。)这是 geom = "text"。当您使用标签时,它会自动旋转值以水平显示。