1

考虑以下代码:

d <- data.frame(y = sample(LETTERS[1:8]), x = c(-1.6,-1.4,-1.2,0,0,1.2,1.3,1.4), stringsAsFactors = FALSE)

ggplot(d, aes(y=x, x=y)) + geom_bar() + coord_flip()

谁能告诉我如何强制 ggplot 不按字母顺序排列数据?我用stringsAsFactors = FALSE这样我的字符不是类型factor。此外,为什么我必须将 x 和 y 交换aes(y=y, x=x)aes(y=x, x=y)我的 y 数据绘制在 y 轴旁边?那是因为coord_flip()我使用的选项吗?

4

1 回答 1

0

这是一个解决方法:

ggplot(d, aes(y=x, x=factor(y, levels=y))) + ...

轴按字母顺序排列的原因是geom_barx变量转换为factor. levelsa 的默认值factor将按字母顺序排列,因此您需要告诉 R 不这样做。

原因coord_flipgeom_barx变量视为 bin,将y变量视为值。

于 2013-06-06T19:14:55.660 回答