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

如何修改ggplot代码实现test1蓝色填充、test2仅边框的散点图?

解决方案

可以通过以下修改实现需求:

AUC= c(0.95,0.897,0.595,0.281,0.6872,0.6844,0.9718,0.7748,
       0.807,0.901,0.801,0.982,0.7856,0.7828,0.6748,0.7579
)

roc_alc_lab= c(rep("AUD_Joint_test1",4),rep("AUD_Univariate_test1",4),
               rep("AUD_Joint_test2",4),rep("AUD_Univariate_test2",4)
)

Setting=c("1","2","3","4","1","2","3","4"
          ,"1","2","3","4","1","2","3","4"
)

data_alc_roc=data.frame(Setting,AUC,roc_alc_lab)


p2=data_alc_roc |>
  transform(
    Model = sub("AUD[^_]*_(.*)_.*$", "\\1", roc_alc_lab),
    Test_data = sub(".*_", "", roc_alc_lab)
  ) |>
  
  ggplot(aes(x = Setting, y = AUC, group = roc_alc_lab)) +
  
  # 新增fill映射到Test_data,使用支持填充的形状
  geom_point(aes(color = Test_data, shape = Model, fill = Test_data), size=3) +
  # 保持原有的颜色设置:test1蓝色,test2红色(边框色)
  scale_color_manual(values = c(test1 = "blue", test2 = "red")) +
  # 设置填充色:test1蓝色填充,test2无填充(NA表示透明)
  scale_fill_manual(values = c(test1 = "blue", test2 = NA)) +
  # 为Model分配支持填充的形状(21=带填充的圆形,22=带填充的方形)
  scale_shape_manual(values = c(Joint = 21, Univariate = 22)) +
  
  # 调整图例标签,合并填充与颜色的图例
  labs(color = "Test Data", shape = "Model", fill = "Test Data") +
  guides(fill = guide_legend(override.aes = list(shape = 21)))

关键修改说明:

  • 在geom_point中新增fill = Test_data的映射,用于控制点的填充色
  • 使用scale_fill_manual设置test1为蓝色填充,test2为NA(透明无填充)
  • 通过scale_shape_manual为不同Model分配支持填充的形状(如21、22这类带边框和填充区域的形状,默认形状如16是实心无单独边框的)
  • 调整图例设置,确保填充和颜色的图例合并显示更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:59:54