R ggplot2'中的不同重新排序;具有多个重复值的s facet_栅格内部元素
这可能是我一直试图完成的一个非常特殊的案例,但仍然非常有用。我需要根据另一个变量,使用多个重复值对ggplot2的facet_网格内部元素进行排序。具有给定data.frameR ggplot2'中的不同重新排序;具有多个重复值的s facet_栅格内部元素,r,sorting,ggplot2,facet-grid,R,Sorting,Ggplot2,Facet Grid,这可能是我一直试图完成的一个非常特殊的案例,但仍然非常有用。我需要根据另一个变量,使用多个重复值对ggplot2的facet_网格内部元素进行排序。具有给定data.framedf的示例(如下所示)。使用因子时,您可以为其级别定义特定的顺序,但在这种情况下,有不同的顺序,因为它基于第三个值,在示例中,对于var2=TRUE的网格,a将是第一个(排名)元素,对于var2=FALSE的网格,A应该是最后一个 df <- data.frame(var1 = c(TRUE, TRUE, FALSE
df
的示例(如下所示)。使用因子
时,您可以为其级别定义特定的顺序,但在这种情况下,有不同的顺序,因为它基于第三个值,在示例中,对于var2=TRUE
的网格,a
将是第一个(排名)元素,对于var2=FALSE
的网格,A
应该是最后一个
df <- data.frame(var1 = c(TRUE, TRUE, FALSE, FALSE, FALSE),
var2 = c('C','A','A','Z','C'),
n = c(5,10,1,3,3))
ggplot(df, aes(reorder(var2,n), n)) +
geom_col() + facet_grid(var1~.) + coord_flip()
df这是我能解决的问题
library(ggplot2)
df <- data.frame(var1 = c(TRUE, TRUE, FALSE, FALSE, FALSE),
var2 = as.factor(c('C','A','A','Z','C')),
n = c(5, 10, 1, 3, 3))
df$var3 <- ifelse(df$var1, paste0(df$var2, 'T'), paste0(df$var2, 'F'))
ggplot(df, aes(x = reorder(var3, n),
y = n)) +
geom_col() +
facet_grid(var1 ~ ., scales = "free", space = "free") +
coord_flip()
库(ggplot2)
df这对你有用吗?看更多
库(tidyverse)
df非常感谢你的帮助@fernando我曾想过这是一个解决方案,但在美学上很糟糕。还有其他想法吗?哇哦,这是一个多么不可思议的解决方案!我认为这应该作为一个可用选项添加到ggplot2中。这对我有用!您将如何使用相同的/已编辑的函数向该逻辑添加第三个变量?您是否在链接的答案中尝试了所有三种方法&removescales=“free”,space=“free”
insidefacet\u grid
?