R语言数据框操作:将指定变量归组以绘制rCharts MultiBarChart
适配rCharts MultiBarChart 的数据转换实现
第一步:修正可运行的基础示例数据
你给出的示例代码存在两处运行报错的问题,先修正为可执行版本:
# 修正点:给字符串值加引号,统一列名匹配 Date <- seq(from = as.Date("2017-01-01"), to = as.Date("2017-01-03"), by = 'day') Weights <- c(37,42,NA) Running <- c(60, NA, 90) Breakfast <- c("toast", "banana", "yogurt") df <- data.frame(Date, Weights, Running, Breakfast)
第二步:转换为适配绘图要求的长表结构
rCharts的MultiBarChart本身依赖长表结构才能识别分组变量,不需要改动你原数据里的Breakfast等独立变量,只提取需要归到Exercise分组的Weights、Running两列做宽转长即可:
# 加载reshape2包做宽转长操作 library(reshape2) # 仅选择Date、Weights、Running三列参与转换,排除其他无关变量 plot_ready_df <- melt( data = df[, c("Date", "Weights", "Running")], id.vars = "Date", # 保留X轴变量作为固定标识列 variable.name = "Exercise", # 生成分组列,列名和你要的绘图参数完全一致 value.name = "y" # 生成Y轴数值列,匹配绘图公式 )
转换完成后的plot_ready_df完全符合你预期的绘图数据结构,全程没有改动Breakfast的原始存储逻辑,也不会把它纳入Exercise分组。
第三步:直接调用目标绘图代码
转换完成后,直接运行你原本就计划使用的代码即可出图:
library(rCharts) nPlot(y ~ Date, group = "Exercise", data = plot_ready_df, type = "multiBarChart")
带Name字段过滤的场景补充
如果你的原始数据包含Name列,只需要在melt函数的id.vars参数里加上"Name",转换后的数据会自动保留Name字段,既不影响多条形图绘制,也可以直接通过交互筛选、subset过滤实现按Name查看对应数据的需求。
针对你提到的50个变量的大型数据框,上述操作只会处理你指定纳入Exercise分组的两个变量,剩下的48个变量完全不会被改动,也不会产生多余的转换开销。
内容的提问来源于stack exchange,提问作者Zachary McClean
相关产品推荐
相关产品推荐

