给定 /tmp/thefile.csv
(CSV 文件)中的以下数据:
AA,12
AB,1
BA,2
以及以下R
代码:
v = read.csv('/tmp/thefile.csv', header=F)
library('ggplot2')
v$V3 = reorder(v$V1, v$V2)
ggplot(v, aes(x=v$V3, y=v$V2), stat='identity') + geom_bar(fill='dark grey', stat="identity")
该图按升序显示条形,这就是我想要的。如果没有reorder
行,绘图将根据因子按字母顺序显示。
但是:
> v
V1 V2 V3
1 AA 12 AA
2 AB 1 AB
3 BA 2 BA
表明顺序仍然是字母顺序。 ggplot 如何知道数字顺序?
最佳答案
如果您查看v$V3
,您会得到以下(print
)输出:
[1] AA AB BA
attr(,"scores")
AA AB BA
12 1 2
Levels: AB BA AA
在最底行,您可以找到指定的级别顺序。
使用levels
函数可以更轻松地获取此信息:
levels(v$V3)
[1] "AB" "BA" "AA"
函数reorder
不会更改向量中的值(或其顺序),但会设置(更改)级别
和分数
属性来指示因子级别的顺序:
attributes(v$V3)
$levels
[1] "AB" "BA" "AA"
$class
[1] "factor"
$scores
AA AB BA
12 1 2
关于r - 了解 R 中的 "reorder"如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14211872/