请考虑以下代码:
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()
选项吗?
答案 0 :(得分:0)
这是一种解决方法:
ggplot(d, aes(y=x, x=factor(y, levels=y))) + ...
轴是按字母顺序排列的原因是geom_bar
将x
变量转换为factor
。 levels
的默认factor
将按字母顺序排列,因此您需要告诉R不这样做。
coord_flip
的原因是geom_bar
将x
变量视为bin,将y
变量视为值。