ggplot2柱状图优化:移除分组标签与均匀分隔柱子
ggplot柱状图修改方案
针对你提出的两个修改需求,以下是具体解决方法和修改后的完整代码:
修改需求与解决方法
- a) 移除顶部分组标签:在
theme()中设置strip.text = element_blank(),直接隐藏所有面板的分组标题。 - b) 实现柱子均匀分隔:在
facet_wrap()中添加space = "free_x"参数,让每个面板的宽度与该组的类别数量成正比,从而保证所有柱子宽度一致。
修改后的完整R代码
gene_expression_data <- data.frame(Germinal = c("CDH1", "NF1", "ATM", "BRIP1", "AXIN2", "NBN", "RAD51C"), Freq_mut = c(13.08, 4.46, 3.17, 1.29, 0.89, 0.79, 0.69)) gene_expression_data |> mutate(Germinal = fct_reorder(Germinal, rev(Freq_mut), mean)) |> ggplot(aes(x = Germinal, y = Freq_mut)) + geom_bar(aes(y = 100), stat = "identity", fill = '#e0e0e0') + geom_bar(stat = "identity") + geom_text(aes(y = Freq_mut, label = sprintf("%2.1f ", round(Freq_mut, 1)) ), adj = 0, nudge_y = 1, size = 3) + facet_wrap(~ Freq_mut < median(Freq_mut), scales = 'free_x', ncol = 2, space = "free_x" # 新增:保证柱子宽度均匀 ) + scale_y_continuous(breaks = c(0, 100)) + labs(y = 'mutation frequency (%)', x = '') + theme( panel.background = element_blank(), strip.text = element_blank(), # 修改:移除顶部分组标签 axis.text.x = element_text(vjust = 1, size = rel(1)), panel.grid = element_blank() )
内容的提问来源于stack exchange,提问作者WindSur
相关产品推荐
相关产品推荐

