按降序分组的条形图?

Grouped bars in descending order?

我想将图表分为两组,并在每组中按降序排列。 我有一个包含变量的文件:

structure(list(Description = c("car", "ball", "cup", "pen", "pencil", 
"computer", "chair", "table", "pillow", "bed", "mattress", "scissors", 
"book", "spoon", "carpet", "speaker", "frame", "curtains", "shades", 
"envelope", "cellphone", "letter", "incense", "backpack", "box", 
"shoes", "vacuum", "screen", "oboe", "mask", "sanitizer", "lights", 
"bottle", "vodka", "branch", "snow"), Measures = c(3481.10542, 
3101.28475, 26.62442, 675.59209, 408.602, 1526.912, 23.168, 44.508, 
27.988, 31.908, 1659.382, 15.732, 5.662, 17.72088, 36.65081, 
1001.16575, 33.54646, 21.41968, 61.98759, 122.51581, 4208.13103,
3060.8029, 2685.79742, 84.9608, 31.988, 21.768, 1712.338, 25.508, 
291.5282, 2987.739, 97.258, 73.8564, 2047.538, 501.518, 1416.888, 
2396.078), Time = c("fall", "fall", "fall", "fall", "fall", "fall", 
"winter", "winter", "winter", "winter", "winter", "winter", "winter", 
"winter", "winter", "winter", "winter", "winter", "winter", "winter", 
"winter", "winter", "winter", "winter", "winter", "winter", "winter", 
"winter", "winter", "winter", "winter", "winter", "winter", "winter", 
"winter", "winter")), class = "data.frame", row.names = c(NA, 
-36L))

下面的代码是我现在正在使用的。

df$Description <- factor(df$Description, levels=unique(df$Description)) 

df %>% arrange(Time, desc(Measures)) %>% 
mutate(object = factor(Description, unique(Description))) %>%
ggplot() +aes(x=Description, y=Measures, fill=Time)+
geom_bar(stat="identity") +
theme_minimal()+
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5))+ 
scale_fill_manual(name="Legend", values = c("navy", "cornflowerblue"), 
labels=c("timea", "time"))

根据这段代码,我得到了下图。

enter image description here

试试这个:

library(tidyverse)
df %>% 
  arrange(Time, desc(Measures)) %>% 
  mutate(Description = factor(Description, unique(Description))) %>%
  ggplot() +aes(x=Description, y=Measures, fill=Time)+
  geom_bar(stat="identity") +
  theme_minimal()+
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(hjust = 0.5))+ 
  scale_fill_manual(name="Legend", values = c("navy", "cornflowerblue"), 
                    labels=c("timea", "time"))