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

