gpt4 book ai didi

r - 防止 ggplot2 图例重新排序标签

转载 作者:行者123 更新时间:2023-12-02 16:30:34 24 4
gpt4 key购买 nike

我有一个列(“类别”),它以特​​定顺序分解(它应该在图例中拼写为“order”)。

对于绘图,我为每一层使用不同的数据子集。将图例的数据重新合并在一起时,因子的顺序会发生变化。

关于如何防止这种重新排序有什么想法吗?

library(ggplot2)
library(dplyr)
library(tidyr)

# make some data
set.seed(12345)
count = 5
data = data.frame(
location = LETTERS[1:count],
o=runif(count), r=runif(count), d=runif(count), e=runif(count), R=runif(count)
)
data = data %>%
arrange(o) %>%
mutate(rank = 1:count) %>%
gather('category', 'value', o:R)

# arrange the factor for category
# NOTICE THE ORDER HERE
data$category = factor(data$category, levels=c('o', 'r', 'd', 'e', 'R'))

# get subsets
subsetO = data %>% filter(category=='o')
subsetNotO = data %>% filter(category!='o')

# confirm that the subset has the same factor levels as the original
all(levels(subsetO$category) == levels(data$category))

ggplot(data = data, aes(x=location, fill=category)) +
geom_bar(data = subsetO, aes(y=value), stat='identity', position='stack') +
geom_bar(data = subsetNotO, aes(y=-value), stat='identity', position='stack')

enter image description here

编辑:我已经重构了该列(这是许多假定的重复项中的解决方案)

最佳答案

为了也为您的问题提供答案,您可以使用 scale_fill_discrete 单独订购颜色。

ggplot(data = data, aes(x=location, fill=category)) +
geom_bar(data = subsetO, aes(y=value), stat='identity', position='stack') +
geom_bar(data = subsetNotO, aes(y=-value), stat='identity', position='stack') +
scale_fill_discrete(breaks = data$category)

许多此类问题都可以通过阅读以下网站 Cookbook for R - Graphs 得到解答。

关于r - 防止 ggplot2 图例重新排序标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32064538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com