gpt4 book ai didi

r - 堆叠条形图,每个堆叠独立的填充顺序

转载 作者:行者123 更新时间:2023-12-04 11:07:42 25 4
gpt4 key购买 nike

我正面临 ggplot2 的行为,我无法理解的排序和堆叠条形图。我已经阅读了一些关于它的问题( herehere 等等),但不幸的是我找不到适合我的解决方案。也许答案很简单,我看不到。希望不是骗子。

我的主要目标是根据排序列(此处称为 ordering)独立排序每个堆栈。

这里我有一些数据:

library(dplyr)
library(ggplot2)
dats <- data.frame(id = c(1,1,1,2,2,3,3,3,3),
value = c(9,6,4,5,6,4,3,4,5),
ordering = c(1,2,3,2,3,1,3,2,4),
filling = c('a','b','c','b','a','a','c','d','b')) %>% arrange(id,ordering)

所以有一个 ID、一个值、一个用于排序的值和一个填充,数据在图中应该按顺序排列,就像 ordering 一样。柱子。

我试图绘制它:这个想法是绘制一个带有 x 轴的堆叠条形图 id ,值 value , 由 filling 填写,但填充的值是 ordering ,按升序排列,即 ordering 的最大值在每列的底部。 filling的订购有点等于数据集,即每列都有一个独立的顺序。

您可以想象这些是假数据,因此 id 的数量可能会有所不同。
 id value ordering filling
1 1 9 1 a
2 1 6 2 b
3 1 4 3 c
4 2 5 2 b
5 2 6 3 a
6 3 4 1 a
7 3 4 2 d
8 3 3 3 c
9 3 5 4 b

当我绘制它们时,有一些我不明白的地方:
library(dplyr) 
dats$filling <- reorder(dats$filling, -dats$ordering)

ggplot(dats,aes(x = id,
y = value,
fill = filling)) +
geom_bar(stat = "identity",position = "stack") +
guides(fill=guide_legend("ordering"))

enter image description here

第二个和第三个 id 没有正确排序,我应该有原始数据集的顺序。

最佳答案

如果您使用单独的 geom_bar s,您可以使订单不同。

dats %>% 
ggplot(aes(x = id, y = value, fill = reorder(filling,-ordering))) +
geom_bar(stat = "identity", position = "stack", data = dats %>% filter(id == 1)) +
geom_bar(stat = "identity", position = "stack", data = dats %>% filter(id == 2)) +
geom_bar(stat = "identity", position = "stack", data = dats %>% filter(id == 3)) +
guides(fill=guide_legend("ordering"))

enter image description here

更普遍:
bars <- map(unique(dats$id)
, ~geom_bar(stat = "identity", position = "stack"
, data = dats %>% filter(id == .x)))

dats %>%
ggplot(aes(x = id, y = value, fill = reorder(filling,-ordering))) +
bars +
guides(fill=guide_legend("ordering"))

关于r - 堆叠条形图,每个堆叠独立的填充顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53596262/

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