Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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
Reorder()未对ggplot中的因子变量进行正确的重新排序_R_Ggplot2 - Fatal编程技术网

Reorder()未对ggplot中的因子变量进行正确的重新排序

Reorder()未对ggplot中的因子变量进行正确的重新排序,r,ggplot2,R,Ggplot2,我不明白为什么箱线图在这个图中没有排序: set.seed(200) x <- data.frame(country=c(rep('UK', 10), rep("USA", 10), rep("Ireland", 5)), wing=c(rnorm(25))) ggplot(x, aes(reorder(country, wing, median),

我不明白为什么箱线图在这个图中没有排序:

set.seed(200)
x <- data.frame(country=c(rep('UK', 10), 
                          rep("USA", 10), 
                          rep("Ireland", 5)),
                wing=c(rnorm(25)))

ggplot(x, aes(reorder(country, wing, median), wing)) + geom_boxplot()
set.seed(200)

x因为你没有使它成为有序因子。试一试

ggplot(x, aes(reorder(country, wing, median, order=TRUE), wing)) + geom_boxplot()

您的代码应该可以正常工作。可能您的某个包加载了一个屏蔽基本
reorder
函数的函数,或者可能是一个用户定义的
reorder
函数,其工作方式不同


您可以使用
冲突()
检查此类名称冲突。分离包、
rm(reorder)
,或者重新启动R并在不定义/附加冲突定义的情况下重试,都可以解决问题。

为什么这会获得否决票?这个问题给出了可复制的代码,并清楚地表明了所做的努力。它不是真正可复制的。错过了对ggplot2的呼叫。另外,您的原始图形与我得到的不匹配。包括
order=TRUE
为meI提供了完全相同的绘图,添加了我用代码得到的结果。如果你想按降序排列,你需要使用
函数(x)-median(x)
。我刚刚遇到了一个类似的问题,清除工作区并重新启动R产生了想要的结果。也不需要包括
order=TRUE
(+1)。关于如何按降序排列的好建议。我建议你把这个带到你的答案中去。我花了一段时间才发现这件衣服穿得这么漂亮。所有因素都有等级顺序。
order=TRUE
是不必要的。虽然此代码可以回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。
ggplot(x, aes(reorder(country, wing, FUN = median), wing)) + geom_boxplot()