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

基于ggplot2修改散点图:添加分组配色、指定直线及条件标签

解决方案

以下是满足你所有需求的完整代码,每部分对应你的要求:

代码实现

# 加载必要包
library(ggplot2)
library(ggrepel)

# 你的原始数据集(保持不变)
CombinedScores<-c("zero", "5", "10", "15", "20", "25", "30", "35", "40", 
                  "45", "50", "60", "G", "LG", "GF", "FER", "VAR", "LOPE", "DAR", "CCOR", "LTR", "Ideal")
FalsePositiveRate<-c(0, 0.04, 0.07, 0.1, 0.18, 0.26, 0.4, 0.5, 0.6, 0.71, 0.8, 0.96, 0.1, 0.26, 
                     0.07, 0.49, 0.07, 0.26, 0.05, 0.28, 0.03, 1 )
TruePositiveRate<-c(0, 0.4, 0.4, 0.53, 0.8, 0.8, 0.92, 1, 1, 1, 1, 1, 
                    0.53, 0.8, 0.47, 0.93, 0.4, 0.8, 0.6, 0.8, 0.8, 1)
MetricOrAlternate<-c("Metric", "Alternate", "Alternate", "Alternate", "Alternate", "Alternate", "Alternate", "Alternate", "Alternate", 
                     "Alternate", "Alternate", "Alternate", "Metric", "Metric", "Metric", "Metric", 
                     "Metric", "Metric", "Metric", "Metric", "Metric", "Metric")

COMBINEDTABLE<-data.frame(CombinedScores, FalsePositiveRate, TruePositiveRate, MetricOrAlternate)

# 绘制图形
ggplot(COMBINEDTABLE, aes(x = FalsePositiveRate, y = TruePositiveRate)) +
  # 需求1:按MetricOrAlternate配色,自动生成图例
  geom_point(aes(color = MetricOrAlternate), size = 3) +
  # 自定义配色(可选,让区分更明显)
  scale_color_manual(values = c("Alternate" = "#2c3e50", "Metric" = "#e74c3c")) +
  # 需求2:添加黄色直线,对应(0,0.5)到(0.5,1),方程为y = x + 0.5
  geom_abline(slope = 1, intercept = 0.5, color = "yellow", size = 1.2, linetype = "solid") +
  # 需求3:仅标注直线上方的点,过滤出满足y > x + 0.5的行
  geom_text_repel(
    data = subset(COMBINEDTABLE, TruePositiveRate > FalsePositiveRate + 0.5),
    aes(label = CombinedScores),
    nudge_y = 0.02,
    nudge_x = 0.02,
    min.segment.length = 0,
    color = "black"
  ) +
  # 设置坐标轴范围
  coord_cartesian(xlim = c(0,1), ylim = c(0,1)) +
  # 优化图例和标题(可选)
  labs(
    x = "False Positive Rate",
    y = "True Positive Rate",
    color = "Category"
  ) +
  theme_minimal()

关键部分说明

  • 分组配色:在geom_point的aes中加入color = MetricOrAlternate,ggplot会自动根据该字段分组上色并生成图例;scale_color_manual可以自定义两种类别的颜色,让区分更清晰。
  • 添加黄色直线:两点(0,0.5)和(0.5,1)对应的直线方程是y = x + 0.5,用geom_abline直接指定斜率slope=1和截距intercept=0.5即可,设置颜色和粗细让直线更显眼。
  • 仅标注直线上方的点:用subset()函数过滤数据集,只保留满足TruePositiveRate > FalsePositiveRate + 0.5的行,将过滤后的数据集传给geom_text_repel的data参数,这样就只会标注直线上方的点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:41:24