Ggplot和重新排序不起作用,即使使用统计数据::

时间:2014-08-10 15:49:15

标签: r ggplot2

我必须做一些愚蠢的事情,但是在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”

谢谢,我已经表示遗憾不理解这一点。

2 个答案:

答案 0 :(得分:2)

total列是一个因素,但reorder()采用数字或逻辑。如果您在指定150, 50, 100值时删除total周围的引号,或者使用totalas.numeric()转换为数字,则会有效。

答案 1 :(得分:0)

您应该总是喜欢重新排序数据,而不是美学。仅重新排序aes可能会产生意外和不需要的结果。虽然它经常在你玩它之后起作用,但重新排序数据本身应该可以直接使用:

df$letters <- reorder(df$letters, total)