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

如何在R中制作渐变彩虹调色板图?求图表名称与实现方案

问题解答

一、图表名称

由于未提供附图,结合“用分类数据替代数值数据”的需求,常见的对应图表类型主要有三种:

  • 分组柱状图(Grouped Bar Chart):用于对比不同分组下各分类类别的频数/占比,每个分类下会并列展示不同分组的柱子。
  • 堆叠柱状图(Stacked Bar Chart):将同一分类下的不同分组数据堆叠在同一柱子中,适合展示各分组在分类中的占比结构。
  • 马赛克图(Mosaic Plot):通过矩形面积表示分类组合的频数占比,适合展示多个分类变量之间的关联关系。

二、R语言实现方案

1. Base R 原生实现

Base R 无需额外安装包即可实现上述图表,核心函数为barplot()和mosaicplot():

  • 分组/堆叠柱状图示例:
# 构造示例分类数据
set.seed(123)
df <- data.frame(
  分组 = rep(c("A组", "B组", "C组"), each = 50),
  类别 = sample(c("类别X", "类别Y", "类别Z"), 150, replace = TRUE)
)
# 生成分类交叉频数表
freq_table <- table(df$分组, df$类别)

# 绘制分组柱状图
barplot(freq_table, beside = TRUE, col = c("#1f77b4", "#ff7f0e", "#2ca02c"),
        legend.text = rownames(freq_table), xlab = "类别", ylab = "频数", main = "分组柱状图")

# 绘制堆叠柱状图
barplot(freq_table, beside = FALSE, col = c("#1f77b4", "#ff7f0e", "#2ca02c"),
        legend.text = rownames(freq_table), xlab = "类别", ylab = "频数", main = "堆叠柱状图")
  • 马赛克图示例(展示分类关联):
mosaicplot(freq_table, main = "分类变量关联马赛克图", color = TRUE)

2. 推荐扩展包

ggplot2(最常用)

语法灵活、可定制性极强,是R中可视化的主流选择:

library(ggplot2)

# 分组柱状图(展示频数)
ggplot(df, aes(x = 类别, fill = 分组)) +
  geom_bar(position = "dodge", color = "black") +
  labs(x = "类别", y = "频数", fill = "分组") +
  theme_minimal()

# 堆叠柱状图(展示占比)
ggplot(df, aes(x = 类别, fill = 分组)) +
  geom_bar(position = "fill", color = "black") +
  labs(x = "类别", y = "占比", fill = "分组") +
  theme_minimal()

ggpubr(快速生成出版级图表)

基于ggplot2封装,代码更简洁,适合快速制作规范图表:

library(ggpubr)
ggbarplot(df, x = "类别", fill = "分组", position = position_dodge(0.8),
          palette = "jco", xlab = "类别", ylab = "频数", legend.title = "分组")

lattice(传统可视化包)

适合批量生成同类型图表,语法风格与base R互补:

library(lattice)
barchart(分组 ~ 类别, data = df, groups = 分组, layout = c(1,1),
         stack = FALSE, col = c("#1f77b4", "#ff7f0e", "#2ca02c"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:09:18