我必须做一些愚蠢的事情,但是在ggplot的reorder
部分定期aes()
,但莫名其妙地对我不起作用。以下是两个版本的MWE,可以在我的系统上重现问题。两者都没有按总数对字母进行重新排序。该图应在X轴上显示b,c,a。
(df <- data.frame(letters = c("a", "b", "c"), nums = 1:3, total = c("150", "50", "100")))
reorder.plot <- ggplot(df, aes(reorder(letters, total), y = nums)) +
geom_point()
reorder.plot
reorder.plot.stats <- ggplot(df, aes(stats::reorder(letters, total), y = nums)) +
geom_point()
reorder.plot.stats
可以看出,在第二个例子中,我指定了stats
包。
有一篇帖子说在调用ggplot之前重新排序数据框,但我知道重新排序过去曾经多次为我工作过 reorder data in ggplot 另一个问题创建了一个新的有序变量,并在ggplot中使用了该变量。 Understanding how "reorder" in R works
我在Windows 8下运行并加载了这些软件包。如果这是相关的,即使我指定stats::
,如何判断reorder()是否被屏蔽?
search()1“。GlobalEnv”“package:extrafont”
“package:RCurl”“package:bitops”[5] “package:qdap”“package:qdapTools”
“package:qdapDictionaries”“package:XML”[9] “package:ReporteRs”“package:ReporteRsjars”
“package:lubridate”“package:gridExtra”[13] “package:RColorBrewer”“package:dplyr”“package:scales” “包:Hmisc”[17]“包装:公式”
“包:生存”“包:花键”
“包:格子”[21]“包:格”“ “package:stringr”“package:XLConnect”
“package:reshape2”[25]“package:plyr”
“package:ggplot2”“tools:rstudio”“package:stats” [29]“package:graphics”“package:grDevices”
“package:utils”“package:datasets”[33] “package:methods”“Autoloads”“package:base”
谢谢,我已经表示遗憾不理解这一点。
答案 0 :(得分:2)
total
列是一个因素,但reorder()
采用数字或逻辑。如果您在指定150, 50, 100
值时删除total
周围的引号,或者使用total
将as.numeric()
转换为数字,则会有效。
答案 1 :(得分:0)
您应该总是喜欢重新排序数据,而不是美学。仅重新排序aes
可能会产生意外和不需要的结果。虽然它经常在你玩它之后起作用,但重新排序数据本身应该可以直接使用:
df$letters <- reorder(df$letters, total)