You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为barmekko条形图添加彩色轮廓线?

解决barmekko条形图添加黑色轮廓无效的问题

问题原因

barmekko函数底层通过geom_rect绘制矩形实现mekko图,而非geom_bar或geom_col,因此额外添加这些图层不会对现有图形产生影响,需要直接针对底层的矩形图层设置轮廓颜色。

解决方案

方法1:直接在barmekko调用中传入color参数(推荐)

barmekko支持通过...传递参数给底层的geom_rect,直接添加color = "black"即可为所有矩形添加黑色轮廓:

library(ggpubr)
library(gridExtra)
library(egg)
library(mekko)
library(lemon)
library(ggh4x)

plotq <- data.frame(product = c(51.7,65.5,6.9, 27.6,13.8),
                  profit_margin = c(24.6, 70.2,1.3 ,1.3, 0.5),
                  D= c(32.8,33.6,2.6,12.1,5.2),
                  revenue = c(51.7,65.5,6.9, 27.6,13.8))

# 给barmekko添加color参数设置轮廓颜色
NUMER <- barmekko(plotq, product, profit_margin, revenue, color = "black") +
  scale_fill_manual(values = c("#8DFF47","#FF9BB1","#FF974C","#F1FF54","#BFFAFF"))+
  scale_y_continuous(expand = expansion(mult = c(0, 0.5))) + 
  theme_bw()+
  theme(axis.title.x = element_blank(), axis.text.x = element_blank()) +
  theme(axis.ticks.length.x = unit(0, "cm")) +
  theme(plot.margin = unit(c(0,0,0,0), "cm"))

GRAVIM <- barmekko(plotq, product, D, revenue, color = "black")+
  scale_fill_manual(values = c("#8DFF47","#FF9BB1","#FF974C","#F1FF54","#BFFAFF"))+
  scale_y_reverse(expand = expansion(mult = c(0.5, 0))) +
  theme_bw() + theme(legend.position = "none") +
  theme(plot.margin = unit(c(0,0,0,0), "cm"))

ggarrange(NUMER, GRAVIM, nrow = 2)

方法2:修改已生成的ggplot对象图层

如果需要在已生成的图表上修改,可以通过ggplot_build和ggplot_gtable调整图层数据:

# 以NUMER为例修改轮廓颜色
NUMER_build <- ggplot_build(NUMER)
# 给第一个图层(geom_rect的数据)添加黑色轮廓
NUMER_build$data[[1]]$colour <- "black"
# 重新生成ggplot对象
NUMER <- ggplot_gtable(NUMER_build)

# 对GRAVIM执行同样操作
GRAVIM_build <- ggplot_build(GRAVIM)
GRAVIM_build$data[[1]]$colour <- "black"
GRAVIM <- ggplot_gtable(GRAVIM_build)

ggarrange(NUMER, GRAVIM, nrow = 2)

效果说明

两种方法都能为mekko图的每个矩形条添加黑色轮廓,解决之前添加geom_bar/geom_col无效的问题。

内容的提问来源于stack exchange,提问作者Daniel Garnique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:17:40