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

R语言ggplot2调用geom_point绘制双Y轴分类变量散点图问题求助

问题原因及修复方案

核心问题

  • 重复映射Y轴:你在ggplot全局参数中设置了y=Implementation,又在第一个geom_point里把y轴覆盖为Method_reliability,相当于把两个完全独立的分类变量硬塞到同一个y轴坐标体系里。ggplot会默认把分类变量转为1、2的整数坐标,Method_reliability的High/Low仅对应1、2两个数值,自然会显示在y轴底部,就是你看到的数值异常偏低的问题。
  • 数据格式不匹配:要实现Y轴同时展示两组分类的效果,需要先把宽格式数据转为长格式,你当前的宽格式数据无法直接实现该排布。
  • 存在冗余代码:你重复调用了两次geom_point,还在labs里设置了没有用到的color映射,属于无效代码。

修复代码

首先加载依赖包、转换数据格式:

library(ggplot2)
library(dplyr)
library(tidyr)

# 把宽格式数据转为长格式,合并两个Y轴分类变量
expanded_long <- expanded %>%
  pivot_longer(cols = c(Implementation, Method_reliability),
               names_to = "major_category",
               values_to = "minor_level")

# 手动调整Y轴顺序,确保Implementation的类别在上、Method_reliability的类别在下
expanded_long$minor_level <- factor(expanded_long$minor_level,
                                    levels = c("Potential", "Observed", "High", "Low"))

绘图代码:

p1 <- ggplot(expanded_long, aes(x = Class, y = minor_level)) +
  geom_point(aes(size = cost_bil)) +
  # 旋转X轴刻度,无需加载额外包,兼容性更好
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  xlab("Taxonomic Class") +
  ylab("Method reliability         Implementation") +
  scale_size_continuous(range = c(1, 20)) +
  labs(size = "US$ billions")

内容的提问来源于stack exchange,提问作者Isma Soto Almena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 14:45:00