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

使用R语言ggplot2+ggpattern保存图表时如何保留图例条纹图案

解决ggpattern图例条纹图案保存丢失问题

使用ggpattern绘制带条纹、圆点图案的柱状图时,保存为PNG等图片格式后,图例中的条纹图案消失,但圆点图案显示正常。以下是问题复现代码:

library(tidyverse)
library(ggplot2)
library(ggpattern)

data <- data.frame(OBS_VALUE = rnorm(12, 10),
                   COUNTRY = c(rep(c("Flat"), times=6), rep(c("House"), times=6)),
                   SERIES_NAME = rep(c(rep(c("price"), times=3), rep(c("cost"), times=3)), times=2),
                   OBS_DATE = rep(seq(as.Date("2020-01-01"), as.Date("2022-01-01"), "years"), times=4)
)

chart = data %>%
  ggplot( aes(x=OBS_DATE, y=OBS_VALUE)) +
  geom_col_pattern( 
    aes(pattern = SERIES_NAME),
    position = position_dodge(),
    fill            = 'red',
    colour          = 'red', 
    pattern_density = 0.5, 
    pattern_fill    = 'white',
    pattern_colour  = 'white'
  )+
  scale_pattern_manual(values = c(price = "stripe", cost = "circle")) +
  facet_grid(~COUNTRY)

ggsave(
  "chart_test.png" ,
  plot = chart,
  scale = 1,
  width = 20,
  height = 10,
  units = "cm",
  dpi=320
)

保存后的图表效果:
保存后的图表

可行解决建议

1. 使用ragg设备渲染

ggsave默认的PNG设备对ggpattern的复杂图案支持有限,改用ragg包的agg_png设备能更好地渲染图案细节:

首先安装ragg包:

install.packages("ragg")

修改ggsave代码:

ggsave(
  "chart_test.png",
  plot = chart,
  scale = 1,
  width = 20,
  height = 10,
  units = "cm",
  dpi = 320,
  device = ragg::agg_png
)

2. 调整图案密度与尺寸

部分情况下,条纹图案密度过低或尺寸太小,保存时被压缩导致显示异常,可尝试调整参数:

geom_col_pattern( 
  aes(pattern = SERIES_NAME),
  position = position_dodge(),
  fill            = 'red',
  colour          = 'red', 
  pattern_density = 0.7,  # 增大条纹密度
  pattern_fill    = 'white',
  pattern_colour  = 'white',
  pattern_size    = 1.2   # 调整图案线条粗细
)

3. 先存矢量格式再转PNG

若上述方法无效,先保存为SVG/PDF等矢量格式(完整保留图案),再转为PNG:

# 保存为SVG
ggsave("chart_test.svg", plot = chart, width = 20, height = 10, units = "cm")

# 用rsvg包转PNG(先安装包)
install.packages("rsvg")
rsvg::rsvg_png("chart_test.svg", "chart_test.png", width = round(20*320/2.54), height = round(10*320/2.54))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:45:34