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

如何用ggplot2复现R基础绘图绘制的帕累托图?

使用ggplot2复刻基础R帕累托图

没问题,我帮你把基础R写的帕累托图用ggplot2完美复刻出来了,细节和你原来的图表完全一致,代码如下:

第一步:数据预处理

先和你原来的步骤一样,把数据按缺陷数降序排列,计算累计计数、频率和累计频率:

library(tidyverse)
d <- tribble(
  ~ category, ~defect,
  "price", 80,
  "schedule", 27,
  "supplier", 66,
  "contact", 94,
  "item", 33
) %>%
  arrange(desc(defect)) %>%
  mutate(
    cumsum = cumsum(defect),
    freq = round(defect / sum(defect), 3),
    cum_freq = cumsum(freq)
  )

第二步:ggplot2绘图代码

这部分完全对应你基础R图的所有细节——双Y轴、柱状图样式、累计线颜色、刻度标签、标题和边框:

ggplot(d, aes(x = fct_inorder(category))) +
  # 绘制柱状图,匹配原图的宽度、无边框样式
  geom_bar(aes(y = defect), width = 0.8, fill = "grey", border = NA, stat = "identity") +
  # 绘制累计折线和实心点,颜色用原图的cyan4
  geom_line(aes(y = cumsum, group = 1), color = "cyan4", linewidth = 1) +
  geom_point(aes(y = cumsum), color = "cyan4", size = 2, shape = 19) +
  # 设置主Y轴(累计计数)和副Y轴(累计频率百分比)
  scale_y_continuous(
    name = "Cumulative Counts",
    breaks = c(0, d$cumsum),
    limits = c(0, 1.05 * max(d$cumsum)),
    sec.axis = sec_axis(
      # 把累计计数转换为0-1的频率比例,对应副轴刻度
      trans = ~ . / max(d$cumsum),
      name = "Cumulative Frequency",
      breaks = c(0, d$cumsum) / max(d$cumsum),
      labels = paste(c(0, round(d$cum_freq * 100)), "%", sep = "")
    )
  ) +
  # X轴不显示名称,保持和原图一致
  scale_x_discrete(name = "") +
  # 设置图表标题
  ggtitle("Pareto Chart (version 1)") +
  # 调整主题细节,匹配原图的边框、字体颜色和大小
  theme_classic() +
  theme(
    plot.title = element_text(hjust = 0.5), # 标题居中
    axis.text.y = element_text(color = "grey62", size = 8), # 主Y轴文字颜色和大小
    axis.text.y.right = element_text(color = "cyan4", size = 8), # 副Y轴文字颜色和大小
    axis.title.y = element_text(color = "grey62"), # 主Y轴标题颜色
    axis.title.y.right = element_text(color = "cyan4"), # 副Y轴标题颜色
    axis.text.x = element_text(size = 7), # X轴分类文字大小
    panel.border = element_rect(colour = "grey62", fill = NA) # 添加灰色边框
  )

关键细节说明:

  • 用fct_inorder(category)锁定分类的排序,避免ggplot自动重新排序离散型X轴
  • 副Y轴通过sec_axis做了刻度转换,确保累计频率的百分比和累计计数的刻度完全对应
  • 主题部分的颜色、字体大小都和你基础R的图对齐,边框样式也保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:35:15