Home Articles

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

Asked
Viewed 668 times
1

我必须做一些愚蠢的事情,但是周期性地在ggplot的 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”“package:Hmisc”[17]“package:Formula “”package:survival“”package:splines“”package:lattice“[21]”package:grid“”package:stringr“”package:XLConnect“”package:reshape2“[25]”package:plyr“”package: ggplot2“”工具:rstudio“”package:stats“[29]”package:graphics“”package:grDevices“”package:utils“”package:datasets“[33]”package:methods“”Autoloads“”package:base “

谢谢,我已经表示遗憾不理解显而易见的事 .

2 Answers

  • 1

    total 列是一个因子,但 reorder() 采用数字或逻辑 . 如果在指定 total 值时删除 150, 50, 100 周围的引号,或者如果使用 as.numeric()total 转换为数字,则它将起作用 .

  • 0

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

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

Related