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

R语言绘制棒棒糖图:按RMSE列升序值分配指定梯度颜色

问题根源

原有代码无法实现按RMSE值匹配颜色的原因:

  • 颜色美学映射绑定的是分类变量Methods,而非数值变量RMSE,颜色分配完全跟随Methods的因子水平顺序,和RMSE数值大小无关联
  • 使用分类变量专用的scale_color_manual配色函数,无法实现数值到色阶的连续映射
修正代码
library(ggplot2)
library(dplyr)

df1 <- read.table(text =
                    "nbb_RMSE  9 0.2402482
                     mbb_RMSE  9 0.1023012
                     cbb_RMSE  8 0.2031448
                     tmbb_RMSE 4 0.2654746
                     tcbb_RMSE 9 0.4048711")

colnames(df1) <- c("Methods", "lb", "RMSE")

df1 |>
  mutate(lb = as.factor(lb)) |>
  ggplot(aes(x = Methods, y = RMSE, colour = RMSE)) + 
  # 优先绘制棒棒糖线段,避免线段覆盖散点
  geom_segment(aes(x = Methods, xend = Methods, yend = RMSE, y = 0), linewidth = 1) + 
  geom_point(size = 4) + 
  # 按RMSE数值从低到高匹配指定色阶
  scale_color_gradientn(
    colours = c("green", "yellowgreen", "yellow", "orange", "red"),
    values = scales::rescale(c(min(df1$RMSE), 
                               quantile(df1$RMSE, 0.25),
                               median(df1$RMSE),
                               quantile(df1$RMSE, 0.75),
                               max(df1$RMSE)))
  ) +
  theme_bw()
实现效果

代码运行后完全匹配需求规则:

  • RMSE最小值(mbb_RMSE,0.102)对应绿色
  • RMSE最大值(tcbb_RMSE,0.405)对应红色
  • 其余样本按RMSE升序依次匹配黄绿、黄、橙色系,棒棒糖线段和对应散点颜色保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:09:34