我想同时在两个参数上订购Task
图。我看了here和here,但我不明白如何同时处理我的两个轴facet_plot
和use
。
es.type
所以library(ggplot2)
my.df <- data.frame(site = sample(c("place1","place2"), 20, replace = T), value = sample(1:10,20,replace = T),
use = sample(c("medic","pharma","foodS","forage"), 5, replace = T), es.type = sample(c("plante","cereal","sol","sun"), 5, replace = T))
可以像:
my.df
我的情节是
site value use es.type
1 place2 5 medic sol
2 place2 2 forage sun
3 place2 2 medic plante
4 place2 8 pharma plante
5 place2 8 foodS cereal
6 place1 9 medic sol
7 place1 6 forage sun
8 place2 10 medic plante
9 place1 8 pharma plante
10 place1 10 foodS cereal
11 place1 7 medic sol
12 place1 3 forage sun
13 place1 5 medic plante
14 place2 7 pharma plante
15 place1 2 foodS cereal
16 place1 9 medic sol
17 place2 1 forage sun
18 place1 2 medic plante
19 place1 8 pharma plante
20 place2 8 foodS cereal
我想重新排序ggplot(data = my.df)+
geom_bar(aes(x = site, y = value, fill = site), stat="identity")+
facet_wrap(use~es.type)+
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank())
并首先获得最大组合。
答案 0 :(得分:2)
您可以尝试使用交互,例如将两个变量粘贴在一起。
library(tidyverse)
# Calculate the maximum on both values
gr <- my.df %>%
mutate(group=paste(use, es.type, sep="\n")) %>%
group_by(group) %>%
summarise(Max=sum(value)) %>%
arrange(-Max)
# Plot the data, but specifiying the order of the facets via
# the factor levels with respect to the order in `gr`.
my.df %>%
mutate(group=factor(paste(use, es.type, sep="\n"), levels=gr$group)) %>%
ggplot()+
geom_bar(aes(x = site, y = value, fill = site), stat="identity")+
facet_wrap(~group)+
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank())
-
在基地R中你可以在绘图之前做到:
my.df$group <- paste(my.df$use, my.df$es.type, sep="\n")
gr <- aggregate(value ~ group, my.df, sum)
gr <- gr[order(gr$value, decreasing = T), ]
my.df$group <- factor(my.df$group, levels = gr$group)