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

R散点饼图切片图案优化:三类需求的解决方案咨询

针对散点饼图图案设置的解决方案

以下是对应三个问题的具体实现方案,基于ggplot2和ggpattern包:


1. 为7个唯一class类别配置不同图案

ggpattern默认提供的图案类型足够覆盖7种需求,通过scale_pattern_type_manual手动为每个class绑定唯一图案即可:

scale_pattern_type_manual(
  values = c(
    y_1 = "stripe",
    y_2 = "crosshatch",
    y_3 = "dot",
    y_4 = "circle",
    o_1 = "hex",
    o_3 = "wave",
    o_4 = "grid"
  )
)

可根据需求替换图案类型,ggpattern支持的常见类型包括:stripe, crosshatch, dot, circle, hex, wave, grid, brick等。


2. 移除group图例中的图案

通过guides()函数覆盖group图例的美学属性,将图案设为NA即可消除图例条中的图案:

guides(
  group = guide_legend(override.aes = list(pattern = NA))
)

如果同时需要移除fill图例的图案,可在guides中添加fill = guide_legend(override.aes = list(pattern = NA))。


3. 按class分组指定图案线条颜色

使用scale_pattern_colour_manual根据class前缀(y_/o_)分别设置线条颜色:

scale_pattern_colour_manual(
  values = c(
    y_1 = "black", y_2 = "black", y_3 = "black", y_4 = "black",
    o_1 = "white", o_3 = "white", o_4 = "white"
  )
)

若class命名有规律,也可通过条件判断简化赋值:

scale_pattern_colour_manual(
  values = ifelse(grepl("^y_", unique(df$class)), "black", "white")
)

完整示例代码

library(ggplot2)
library(ggpattern)

# 假设df为已处理好的包含饼图多边形坐标、class、fill等字段的数据框
ggplot(df, aes(x = x_pie, y = y_pie, group = interaction(id, class), fill = fill, pattern = class)) +
  geom_polygon_pattern(
    colour = "black",
    pattern_fill = NA,
    pattern_density = 0.1,
    pattern_spacing = 0.05
  ) +
  # 配置7种不同图案
  scale_pattern_type_manual(
    values = c(
      y_1 = "stripe", y_2 = "crosshatch", y_3 = "dot",
      y_4 = "circle", o_1 = "hex", o_3 = "wave", o_4 = "grid"
    )
  ) +
  # 指定图案线条颜色
  scale_pattern_colour_manual(
    values = ifelse(grepl("^y_", unique(df$class)), "black", "white")
  ) +
  # 移除group图例的图案
  guides(
    group = guide_legend(override.aes = list(pattern = NA)),
    fill = guide_legend(override.aes = list(pattern = NA)) # 若fill图例也需去图案则保留
  ) +
  coord_equal() # 确保饼图为圆形

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:07:13