ggplot2
是一个用于创建统计图形的强大 R 语言包。要按填充变量的比例对堆叠条形图进行重新排序,你可以使用 reorder()
函数来对数据进行排序,然后使用 ggplot2
来绘制图形。
以下是一个示例代码,展示了如何根据填充变量的比例对堆叠条形图进行重新排序:
# 加载必要的包
library(ggplot2)
# 创建示例数据集
data <- data.frame(
category = rep(c("A", "B", "C"), each = 3),
subcategory = rep(c("X", "Y", "Z"), times = 3),
value = c(30, 50, 70, 60, 40, 80, 20, 90, 10)
)
# 计算每个 category 下 subcategory 的总和
totals <- data %>%
group_by(category) %>%
summarise(total = sum(value))
# 将总和数据合并回原始数据集
data <- merge(data, totals, by = "category")
# 计算每个 subcategory 在其 category 中的比例
data <- data %>%
group_by(category) %>%
mutate(percentage = value / total)
# 按比例对 subcategory 进行排序
data <- data %>%
group_by(category) %>%
arrange(desc(percentage)) %>%
mutate(order = row_number())
# 绘制堆叠条形图
ggplot(data, aes(x = category, y = value, fill = subcategory)) +
geom_bar(stat = "identity") +
scale_fill_brewer(palette = "Set1") +
theme_minimal() +
labs(title = "Stacked Bar Chart with Proportional Sorting",
x = "Category",
y = "Value",
fill = "Subcategory")
在这个示例中,我们首先创建了一个包含类别(category)、子类别(subcategory)和值(value)的数据集。然后,我们计算了每个类别下子类别的总和,并将其合并回原始数据集。接着,我们计算了每个子类别在其类别中的比例,并按这个比例对子类别进行了排序。最后,我们使用 ggplot2
绘制了堆叠条形图。
如果你遇到问题,比如条形图没有按照预期排序,可能是因为排序逻辑没有正确应用到数据集上。确保你在绘图前已经正确地计算了比例并进行了排序。
参考链接:
ggplot2
官方文档: https://ggplot2.tidyverse.org/dplyr
包用于数据处理: https://dplyr.tidyverse.org/请注意,这个示例假设你已经安装并加载了 ggplot2
和 dplyr
包。如果没有安装,你可以使用 install.packages()
函数来安装它们。
领取专属 10元无门槛券
手把手带您无忧上云