ggplot绘制带黑边分组形状填充散点图时fill不生效如何解决
ggplot2散点图同时映射形状、填充色并添加黑色边框的实现方法
首先明确核心规则:ggplot2中只有编号为2125的点形状同时支持`fill`(填充色)和`color`(边框色)属性,默认映射的120号形状仅支持边框色设置,无填充属性,这是fill映射不生效的根本原因。
你之前在geom_point层外层写shape=21属于固定全局参数,会直接覆盖aes中给cat.1映射的形状规则,因此丢失了不同cat.1的形状区分。
实现代码
你只需要新增scale_shape_manual层,将cat.1对应的所有形状指定为21~25区间内的带填充形状即可,完整可运行代码如下:
library(ggplot2) plot_final <- ggplot(example, aes(x = x_axis, y = mean, shape = cat.1)) + theme_bw() + facet_wrap(~time, dir = "h") + # fill映射到cat.2,固定所有点边框为黑色 geom_point(aes(fill = cat.2), size = 4, color = "black", position = position_jitter(0)) + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) + geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd), width = 0.1, position = position_jitter(0)) + # 手动指定cat.1的所有水平对应带填充的形状,可根据cat.1的水平数量增删形状编号 scale_shape_manual(values = c(21, 22, 23, 24, 25)) + # 可选:如果需要自定义填充色可使用scale_fill_manual/scale_fill_brewer调整 scale_fill_brewer(palette = "Set2")
参数说明
- 你需要根据数据中
cat.1的因子水平数量调整scale_shape_manual中values的形状数量,21~25总共5种带填充的形状,足够覆盖绝大多数分组场景 - 对应形状样式:21为圆形、22为方形、23为菱形、24为上三角、25为下三角,可根据需求调整形状顺序
内容的提问来源于stack exchange,提问作者Marta Román
相关产品推荐
相关产品推荐

