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

R ggplot2绘制常规y轴双折线图刻度、连线异常如何解决

R ggplot2双折线图绘制异常修正

问题根因

当前代码输出图表异常,由两个核心错误导致:
运行输出异常图表

  • 数据类型不匹配:ROC_twenty_year列的数值使用逗号作为小数分隔符,R读取时会默认将该列识别为字符/因子类型,而非数值型,因此y轴会按照文本字典序排列刻度,完全不符合数值轴的大小排序逻辑。
  • 分组映射错误:代码中硬编码group = 1,强制将所有观测值归为同一分组,因此所有数据点会被连成一条杂乱的折线,无法按Amendment字段拆分出GW(ten)和GW(one)两个分组的独立折线。
  • 冗余代码问题:代码中先后叠加theme_minimal()和theme_bw(),前者会被后者完全覆盖,属于无效设置。

修正后可运行代码

library(ggplot2)
# 注:原代码加载的reshape2、plyr、gridExtra包本次绘图未使用,可按需保留

# -------------- 数据处理部分 --------------
# 如果是手动构造数据集,直接使用数值型(点号作为小数分隔符)即可
data <- data.frame(
  Amendment = rep(c("GW(ten)", "GW(one)"), each = 20),
  Feldjahre = rep(1:20, 2),
  ROC_twenty_year = c(
    100,53.53,147.42,96.43,186.26,131.60,218.10,160.43,244.21,184.07,265.61,203.44,283.15,219.33,297.53,232.35,309.32,243.02,318.99,251.77,
    100,53.53,47.42,42.90,38.84,35.17,31.84,28.83,26.10,23.64,21.40,19.38,17.54,15.88,14.38,13.02,11.79,10.67,9.67,8.75
  )
)

# 如果是从外部csv/文本文件读入的原始数据,不需要手动重构,运行下面这行转换类型即可
# data$ROC_twenty_year <- as.numeric(gsub(",", ".", data$ROC_twenty_year))

# -------------- 绘图部分 --------------
ggplot(data=data, aes(x = Feldjahre, y = ROC_twenty_year, 
                      group = Amendment, color = Amendment)) +
  geom_line(size = 1, alpha = 0.8) +
  geom_point(size = 3) +
  scale_x_continuous(breaks = 1:20) +
  labs(x = "Feldjahre", y = "ROC_twenty_year", color = "Amendment分组") +
  theme_bw(base_size = 16)

修正逻辑说明

  • 数据预处理阶段将ROC_twenty_year列的逗号小数分隔符替换为R可识别的点号,再转换为数值类型,y轴即可按照数值大小正常生成线性刻度。
  • 美学映射中将group、color均绑定到Amendment字段,既可以让ggplot按分组分别绘制折线,也可以通过颜色直接区分两个分组的序列。
  • 移除冗余的主题设置,补充了x轴刻度和图例标签,提升图表可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.11 16:16:23