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

R语言:如何用bias()结果创建数据框并通过ggplot绘制散点图?

问题解答

1. sku_analysis数据框的创建问题

你当前创建的sku_analysis语法上是正确的,但属于宽格式数据框,这种格式并不适配ggplot的可视化逻辑——ggplot更适合处理长格式(tidy data):每行对应一个独立观测,列对应明确的变量类别(如SKU名称、偏差值)。

宽格式的问题在于,每个SKU的偏差被存为单独一列,ggplot无法将这些列识别为同一类别的分组数据。推荐重构为长格式,两种实现方式:

# 方式1:直接创建长格式数据框
sku_analysis <- data.frame(
  SKU = c("SKUA", "SKUB", "SKUC", "SKUD"),
  bias = c(SKUA_bias, SKUB_bias, SKUC_bias, SKUD_bias)
)

# 方式2:从已有宽格式转换(依赖tidyverse)
library(tidyverse)
sku_analysis_wide <- data.frame(SKUA_bias, SKUB_bias, SKUC_bias, SKUD_bias)
sku_analysis <- sku_analysis_wide %>%
  pivot_longer(cols = everything(), names_to = "SKU", values_to = "bias") %>%
  mutate(SKU = stringr::str_remove(SKU, "_bias")) # 移除SKU名称中的_bias后缀

2. 用ggplot绘制散点图的方法

你之前的ggplot代码错误在于:aes()参数中不能同时传入多个x变量,ggplot要求x、y对应单一的变量列。由于每个SKU仅对应一个偏差值,散点图的合理逻辑是:x轴为SKU名称,y轴为偏差值,每个点代表对应SKU的预测偏差。

基础绘图代码

library(ggplot2)

ggplot(data = sku_analysis, aes(x = SKU, y = bias)) +
  geom_point(size = 3) + # 放大点的尺寸,提升可读性
  labs(
    x = "SKU编号",
    y = "预测偏差(Bias)",
    title = "各SKU预测偏差对比"
  ) +
  theme_minimal()

y轴设置说明

  • 默认情况下,ggplot会根据偏差值的范围自动调整y轴刻度。如果需要手动定制:
    • 指定y轴范围:scale_y_continuous(limits = c(-60, 20))(可根据你的实际偏差值调整)
    • 自定义刻度间隔:scale_y_continuous(breaks = seq(-60, 20, 10))
  • 若要突出“预测完全准确(偏差=0)”的基准线,可添加一条参考线:
    ggplot(data = sku_analysis, aes(x = SKU, y = bias)) +
      geom_point(size = 3) +
      geom_hline(yintercept = 0, color = "red", linetype = "dashed") + # 红色虚线基准线
      labs(x = "SKU编号", y = "预测偏差(Bias)", title = "各SKU预测偏差对比") +
      theme_minimal()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:46:16