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

Plotly R分组条形图问题:消除组内间隙+底部显示数值

解决分组条形图间隙与数值底部显示问题

我来帮你搞定这两个小问题,直接上修改后的代码和详细说明:

1. 消除组内条形间隙

当你手动设置width参数后,plotly默认的分组布局会保留组内空隙。要让两个条形完全紧挨,你可以给第二个条形设置负的offset值,数值等于你设置的条形宽度,这样就能让第二个条形向左移动,刚好和第一个条形贴在一起。

2. 将数值显示在条形底部

在add_trace里添加text参数绑定对应数值,然后设置textposition = 'bottom',就能把数值放在条形的底部(靠近x轴一侧)。如果数值和x轴标签重叠,还可以调整布局的底部边距来优化显示。

修改后的完整代码

library(plotly)
Animals <- c("giraffes", "orangutans", "monkeys")
SF_Zoo <- c(20, 14, 23)
LA_Zoo <- c(12, 18, 29)
data <- data.frame(Animals, SF_Zoo, LA_Zoo)

p <- plot_ly(data, x = ~Animals) %>% 
  # 第一个条形:设置宽度,添加底部显示的数值
  add_trace(y = ~SF_Zoo, type = 'bar', width = 0.25, name = 'SF Zoo',
            text = ~SF_Zoo, textposition = 'bottom') %>%
  # 第二个条形:设置相同宽度,负offset抵消间隙,添加底部数值
  add_trace(y = ~LA_Zoo, type = 'bar', width = 0.25, name = 'LA Zoo',
            text = ~LA_Zoo, textposition = 'bottom', offset = -0.25) %>%
  layout(yaxis = list(title = 'Count'), barmode = 'group',
         # 可选:如果数值和x轴标签重叠,加大底部边距
         margin = list(b = 80))

p

关键改动说明

  • 消除间隙:给LA Zoo的条形设置offset = -0.25,这个值和你设置的width大小相等、符号相反,刚好让两个条形完全贴合。
  • 底部数值:每个add_trace里都添加了text = ~对应列和textposition = 'bottom',plotly会自动把数值渲染在条形的底部位置;如果出现重叠,margin = list(b = 80)可以加大底部空间,让显示更清晰。

内容的提问来源于stack exchange,提问作者Dan Schmidt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:03:47