R 如何在ggplot中的条形图上,在单个条形图内按值正确排列线段(即使在从因子更改时)
我试图根据值(底部条形图中的最大值,顶部条形图中的最小值)对条形图中每个条形图中的分段进行排序,但没有成功 我已经对此进行了研究,并认为这应该是可行的,但有些地方不对劲,我找不到问题所在。我尝试了这个解决方案,但没有成功 以下是一个可复制的示例:R 如何在ggplot中的条形图上,在单个条形图内按值正确排列线段(即使在从因子更改时),r,ggplot2,dplyr,bar-chart,R,Ggplot2,Dplyr,Bar Chart,我试图根据值(底部条形图中的最大值,顶部条形图中的最小值)对条形图中每个条形图中的分段进行排序,但没有成功 我已经对此进行了研究,并认为这应该是可行的,但有些地方不对劲,我找不到问题所在。我尝试了这个解决方案,但没有成功 以下是一个可复制的示例: library(dplyr) my_repro <- structure(list(Date = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
library(dplyr)
my_repro <- structure(list(Date = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "2020-04-01", class = "factor"),
Grp = c("A", "A", "A", "B", "B", "B", "C", "C", "C", "D",
"D", "D", "E", "E", "E"), Segment = structure(c(1L, 2L, 3L,
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("Seg1",
"Seg2", "Seg3"), class = "factor", scores = structure(c(Seg1 = NA_real_,
Seg2 = NA_real_, Seg3 = NA_real_), .Dim = 3L, .Dimnames = list(
c("Seg1", "Seg2", "Seg3")))), Value = c(220, 75, NA,
NA, 400, NA, 350, NA, NA, 170, NA, NA, 375, 100,
NA)), row.names = c(NA, -15L), class = c("tbl_df", "tbl",
"data.frame"))
# Reorder the Group based on the Value
my_repro$Grp <- reorder(my_repro$Grp, -my_repro$Value)
#my_repro$Grp <- as.character(my_repro$Grp) # I later added this line too, no luck
# Plot
ggplot(my_repro, aes(x=Segment, y=Value, fill=Grp)) +
geom_col()
库(dplyr)
my_repro从forcats
软件包中尝试fct_reorder
功能:
library(dplyr)
library(forcats)
my_repro <- my_repro %>%
group_by(Segment) %>%
mutate(Grp = fct_reorder(Grp, Value))
# Plot
ggplot(my_repro, aes(x=Segment, y=Value, fill=Grp)) +
geom_col()
库(dplyr)
图书馆(供猫用)
我的报告%
分组单位(分部)%>%
变异(Grp=fct_重新排序(Grp,值))
#密谋
ggplot(我的复制,aes(x=段,y=值,填充=Grp))+
geom_col()
从forcats
软件包中尝试fct\u重新排序
功能:
library(dplyr)
library(forcats)
my_repro <- my_repro %>%
group_by(Segment) %>%
mutate(Grp = fct_reorder(Grp, Value))
# Plot
ggplot(my_repro, aes(x=Segment, y=Value, fill=Grp)) +
geom_col()
库(dplyr)
图书馆(供猫用)
我的报告%
分组单位(分部)%>%
变异(Grp=fct_重新排序(Grp,值))
#密谋
ggplot(我的复制,aes(x=段,y=值,填充=Grp))+
geom_col()
事实证明,这也会起作用:my_repo%groupby(Segment)%%>%mutate(Grp=reorder(Grp,Value))
不确定为什么原始方法不起作用,因为它在我前面提到的问题中起作用。关键似乎是首先使用groupby
,这也会起作用:my_repo%group_by(Segment)%%>%mutate(Grp=reorder(Grp,Value))
不知道为什么原始方法不起作用,因为它在我前面提到的问题中起作用。关键似乎是首先使用group_by
。