使用R的fantaxtic包绘图:移除图例标题并调整Other位置
使用fantaxtic绘制嵌套柱状图的需求解决方案
1. 移除图例中的“Order”标题
直接在theme()配置里把legend.title设置为element_blank()即可,替换你原代码中对应行:
theme( plot.title = element_text(hjust = 0.6, size = 12, face = "bold", color = 'black'), legend.title = element_blank(), # 移除图例标题 legend.key.size = unit(8, "points"), legend.position = 'bottom', axis.text.x = element_text(angle = 0, hjust = 0.5, color = 'black'), axis.text.y = element_text(color = 'black'), strip.text = element_text(face = "bold", color = 'black') )
2. 将“Other Orders”置于类群列表末尾
需要先调整top_nested$ps_obj中Order分类的因子水平,手动把“Other Orders”移到最后:
# 提取分类表并调整Order的因子顺序 tax_df <- as.data.frame(tax_table(top_nested$ps_obj)) # 筛选出除"Other Orders"外的所有类群,再将"Other Orders"追加到末尾 order_levels <- c(setdiff(unique(tax_df$Order), "Other Orders"), "Other Orders") # 重新设置因子水平 tax_df$Order <- factor(tax_df$Order, levels = order_levels) # 更新phyloseq对象的分类表 tax_table(top_nested$ps_obj) <- as.matrix(tax_df)
修改后的完整代码
library(fantaxtic) sample_order<-c('Control.t0','Control.t30', 'Control.t60', 'LPSC.232.t30', 'LPSC.232.t60', 'APS.Control.t0', 'APS.Control.t30', 'APS.LPSC.232.t30','APS.Control.t60', 'APS.LPSC.232.t60') top_nested <- nested_top_taxa(physeq_Fungi, top_tax_level = 'Phylum', nested_tax_level = 'Order', n_top_taxa = 5, n_nested_taxa = 5) # 调整Order因子水平,把Other Orders移到最后 tax_df <- as.data.frame(tax_table(top_nested$ps_obj)) order_levels <- c(setdiff(unique(tax_df$Order), "Other Orders"), "Other Orders") tax_df$Order <- factor(tax_df$Order, levels = order_levels) tax_table(top_nested$ps_obj) <- as.matrix(tax_df) test<-plot_nested_bar(top_nested$ps_obj, top_level = "Phylum", nested_level = "Order", nested_merged_label = "Other Orders", palette = c('Ascomycota' = 'green' , 'Basidiomycota' = 'purple', 'Cryptomycota' = "blue", 'LKM15' = "red", 'Mucoromycota' = "yellow")) + facet_wrap(~Oxidation, scales = "free_x") + theme( plot.title = element_text(hjust = 0.6, size = 12, face = "bold", color = 'black'), legend.title = element_blank(), # 移除图例标题 legend.key.size = unit(8, "points"), legend.position = 'bottom', axis.text.x = element_text(angle = 0, hjust = 0.5, color = 'black'), axis.text.y = element_text(color = 'black'), strip.text = element_text(face = "bold", color = 'black') )
内容的提问来源于stack exchange,提问作者user1892205
相关产品推荐
相关产品推荐

