如何仅放大ggplot中cyl=6水平对应的geom_point点尺寸?
两种实现仅放大cyl==6数据点的方法
方法一:用ifelse映射尺寸
直接在aes()里通过ifelse指定不同组的点尺寸,同时隐藏不需要的尺寸图例:
ggplot(mtcars, aes(x = qsec, y = mpg, col = as.factor(cyl))) + geom_point(aes(size = ifelse(cyl == 6, 4, 2))) + guides(size = "none")
这里cyl==6的点尺寸设为4,其余保持2,guides(size = "none")用来移除自动生成的尺寸图例,避免干扰原有的颜色分组图例。
方法二:分层绘制点
先绘制所有尺寸为2的点,再单独绘制cyl==6的大尺寸点(后绘制的点会覆盖在上方):
ggplot(mtcars, aes(x = qsec, y = mpg, col = as.factor(cyl))) + geom_point(size = 2) + geom_point(data = subset(mtcars, cyl == 6), size = 4)
这种方式逻辑更直观,不需要处理图例问题,适合只针对单个分组调整样式的场景。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

