0

我将我的树以 nwk 格式导入到 R 中。

我能够按照常见问题解答中的说明进行操作(提取引导值并显示大于 70% 的引导值),但很难在没有下划线的情况下使用我的新标签。它在我在 geom_tiplabel 中使用 label_value 时有效,但在我使用 aes(label=....) 时无效。我也没有成功将物种名称斜体化。理想情况下,我想用斜体显示“物种名称”,而不是用斜体显示“加入”和“菌株 XYZ”。

我不知道我的错误在哪里。任何帮助深表感谢。

您将在下面找到我制作的示例脚本。我还在此处附加了 nwk 格式的示例树。

tree1 <- read.tree("example.nwk")    

tree1    
plot(tree1)      


p1ex <- ggtree(tree1)    

plot(p1ex)    

提取和转换引导值

q <- ggtree(tree1)    
q    

d <-q$data    
b<-d[!d$isTip,]    

b$label = as.numeric(b$label)    
b$label = round(b$label * 100)    
b$label <- as.numeric(b$label)    

用tiplabels提取标签并删除下划线

d <-q$data    
l<-d[d$isTip==T,]    

l$label ='label'= gsub("_"," ",l$label)    

用tiplabels提取标签并删除下划线

df<-p1ex[[1]] 

newcolumn<-df[[4]]               

labelnew<-data.frame('label'=gsub("_"," ",newcolumn))     
labelnew    

ggtree 使用 label_value 使用不带下划线的标签

windows(height=8,width=8)    

q +     
  geom_tree() +     
  theme_tree()+    
  geom_text2(data=b, aes(label=label, subset = !is.na(as.numeric(label)) & as.numeric(label) > 
70),    
             size = 4,    
             color = "black",     
             hjust=1.3,    
             vjust=1.3,    
             parse = TRUE)+    
  geom_nodepoint(size=1)+    
  xlim(0, 1.8) +    
  geom_tiplab(data=l,size=4,label_value(labelnew))+    
  geom_treescale(x=0, y=12, fontsize = 5)    

ggtree 使用 geom_tiplabel 使用不带下划线的标签,不起作用

windows(height=8,width=8)    

q +       
  geom_tree() +     
  theme_tree()+    
  geom_text2(data=b, aes(label=label, subset = !is.na(as.numeric(label)) & as.numeric(label) > 
70),    
             size = 4,    
             color = "black",     
             hjust=1.3,    
             vjust=1.3,    
             parse = TRUE)+    
  geom_nodepoint(size=1)+    
  xlim(0, 1.8) +    
  geom_tiplab(data=l, size=4,aes(label=label))+    
  geom_treescale(x=0, y=12, fontsize = 5)    

更新

我再次使用了常见问题解答中的示例。

ggtree 使用 geom_tiplabel,添加数据框,加入粗体,物种名称斜体,addinfo 正常

q %<+% lnew + 
  geom_tree() + 
  theme_tree()+
  geom_text2(data=b, aes(label=label, subset = 
!is.na(as.numeric(label)) & as.numeric(label) > 70),
             size = 4,
             color = "black", 
             hjust=1.3,
             vjust=1.3,
            parse = TRUE)+
  geom_nodepoint(size=1)+
  xlim(0, 1.8) +
  geom_tiplab(aes(label=paste0('bold(', Accession , ')~italic(', 
species, ')~', addinfo)), parse=T)+
 geom_treescale(x=0, y=12, fontsize = 5)

添加的数据框在这里。树现在看起来像这样。这是我用上面的脚本得到的树

我知道该脚本之所以有效,是因为我删除了数据框中的空格(例如,物种名称变成了物种名称)。

因此,如果我现在将我的数据框改回原来的,我该如何使用 parse 来避免出错并将其包含在 ggtree 中?

解析错误(文本 = 文本 [[i]])::1:33:意外符号 1:粗体(加入)~斜体(物种名称 ^

4

0 回答 0