Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2'中的不同重新排序;具有多个重复值的s facet_栅格内部元素_R_Sorting_Ggplot2_Facet Grid - Fatal编程技术网

R ggplot2'中的不同重新排序;具有多个重复值的s facet_栅格内部元素

R 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

这可能是我一直试图完成的一个非常特殊的案例,但仍然非常有用。我需要根据另一个变量,使用多个重复值对ggplot2的facet_网格内部元素进行排序。具有给定data.frame
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中。这对我有用!您将如何使用相同的/已编辑的函数向该逻辑添加第三个变量?您是否在链接的答案中尝试了所有三种方法&remove
scales=“free”,space=“free”
inside
facet\u grid