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
相关产品推荐
相关产品推荐

