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

如何用R语言Plotly基于dt.data绘制正确的分组柱状图?

修正后的Plotly分组柱状图代码

你的代码问题在于未正确按toBook字段分组,反而错误添加了以toBook为Y轴的轨迹。要实现按toBook分组的柱状图,需基于分类变量创建对应轨迹,以下是两种可行方案:

方案一:使用color参数自动分组

此方法简洁高效,Plotly会根据toBook的不同值自动生成分组柱状图:

library(plotly)

plotQuantity <- plot_ly(dt.data, 
                        x = ~newBegTime, 
                        y = ~sumQuantity, 
                        type = 'bar', 
                        color = ~toBook,  # 按toBook字段分组
                        hoverinfo = 'x+y+name') %>%
  layout(xaxis = list(title = "日期"), 
         yaxis = list(title = 'MWh'),
         barmode = 'group',  # 设置为分组显示模式
         legend = list(title = list(text = '<b> toBook </b>')))

plotQuantity

方案二:手动添加分组轨迹

若需精细控制每个分组的样式,可循环为每个toBook类别单独添加轨迹:

library(plotly)

# 获取所有唯一的toBook分类
book_groups <- unique(dt.data$toBook)

# 初始化绘图对象
plotQuantity <- plot_ly()

# 循环添加每个分组的柱状图轨迹
for (group in book_groups) {
  group_data <- dt.data[dt.data$toBook == group, ]
  plotQuantity <- plotQuantity %>%
    add_trace(data = group_data,
              x = ~newBegTime,
              y = ~sumQuantity,
              type = 'bar',
              name = group)
}

# 设置图表布局
plotQuantity <- plotQuantity %>%
  layout(xaxis = list(title = "日期"),
         yaxis = list(title = 'MWh'),
         barmode = 'group',
         legend = list(title = list(text = '<b> toBook </b>')))

plotQuantity

关键修正说明

  • 移除错误的add_trace(y = ~toBook):toBook是分类变量,不能作为Y轴数值使用
  • 通过color参数或循环分组,实现按toBook的分组逻辑
  • 确保barmode = 'group'正确配置,让同日期的柱状图并排显示
  • 补充X轴标题和图例标题,提升图表可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:42:02