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

ggplot2指定形状的填充色与尺寸调整技术求助

问题描述

我有一份数据集,需要绘制可视化图形,当前使用R语言ggplot2编写的绘图代码如下:

##Data
x <- c(10, 7.5, 5.5, 2.3, 3, 3.9, -2.5, -5, -9)
y <- c(3, 1.25, .75, -1.27, -.6, .88, -7.5, -5, -4)
z <- c("Good", "Good", "Good", "Average", "Average", "Average", "Bad", "Bad", "Bad")

##Dataframe
md <- data.frame(x, y, z)

##Plotting
plot <- print(md %>% 
                ggplot(aes(x = x,
                           y = y))+
                geom_point(aes(shape = z))+
                geom_smooth(method = lm, se = F, color = "black")+
                labs(x = "X", y = "Y")+
                theme_minimal()+
                scale_shape_manual(values = c(24, 21, 25),
                                   breaks = c("Good", "Average", "Bad"))+
         
                theme(text = element_text(family = "Segoe UI"),
                      axis.line = element_line(size = .3, colour = "black", linetype = 1),
                      axis.ticks = element_line(size = .3, color="black"),
                      axis.ticks.length = unit(.1, "cm")))

注:我通过scale_shape_manual指定了三个与报告匹配的形状(24、21、25),无法修改形状。现需实现两个需求:

  • 将这些形状填充为黑色;
  • 统一增大所有形状的尺寸(尺寸一致且更大)。

我曾尝试使用scale_color_manual(values = c("#000000", "#000000", "#000000")),但未得到预期效果,恳请帮忙修正代码。

解决方案

你之前的尝试无效是因为选的形状(21、24、25)属于带填充区域的特殊形状:color参数仅控制形状的边框颜色,而内部填充色需要用fill参数来设置。要实现需求,只需做两处修改:

  1. 在geom_point中添加fill = "black",直接将所有形状的填充色设为黑色;
  2. 同时添加size参数(比如设为4,可根据需求调整数值),统一增大形状尺寸。

修正后的完整代码如下:

##Data
x <- c(10, 7.5, 5.5, 2.3, 3, 3.9, -2.5, -5, -9)
y <- c(3, 1.25, .75, -1.27, -.6, .88, -7.5, -5, -4)
z <- c("Good", "Good", "Good", "Average", "Average", "Average", "Bad", "Bad", "Bad")

##Dataframe
md <- data.frame(x, y, z)

##Plotting
plot <- md %>% 
  ggplot(aes(x = x, y = y))+
  geom_point(aes(shape = z), fill = "black", size = 4) + # 新增填充色和尺寸参数
  geom_smooth(method = lm, se = F, color = "black")+
  labs(x = "X", y = "Y")+
  theme_minimal()+
  scale_shape_manual(values = c(24, 21, 25),
                     breaks = c("Good", "Average", "Bad"))+
  theme(text = element_text(family = "Segoe UI"),
        axis.line = element_line(size = .3, colour = "black", linetype = 1),
        axis.ticks = element_line(size = .3, color="black"),
        axis.ticks.length = unit(.1, "cm"))

print(plot)

另外,代码中把print()从赋值语句中抽离,结构会更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:20:30