2

/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知道数字顺序?

4

1 回答 1

4

如果您查看,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不会更改向量中的值(或其顺序),而是设置(更改)levelsscores属性以指示因子水平的顺序:

attributes(v$V3)
$levels
[1] "AB" "BA" "AA"

$class
[1] "factor"

$scores
AA AB BA 
12  1  2 
于 2013-01-08T09:34:19.260 回答