ggplot2:排序因子水平似乎对数字没有影响

时间:2018-03-18 15:28:16

标签: r ggplot2

我为这个查询的一个简单的本质道歉,但我一直在为什么这不起作用。“

所以,这是一个简单的可重复的例子:

library(ggplot2)
dm <- diamonds
ggplot(dm, aes(x = cut, y = price)) + geom_violin()

我得到以下情节(我应该这样做):

enter image description here

但我希望图中的小提琴形式为

> "Ideal"     "Fair"      "Very Good" "Premium"   "Good"

所以我重新排序因子水平:

levels(dm$cut) <- levels(dm$cut)[c(5, 1, 3, 4, 2)]
levels(dm$cut)
[1] "Ideal"     "Fair"      "Very Good" "Premium"   "Good"     

然而,当我尝试以下内容时:

ggplot(dm, aes(x = cut, y = price)) + geom_violin()

我按照与以前相同的顺序获得小提琴,但按照我想要的顺序排列标签。我该如何解决这个问题? TIA的任何帮助和建议! enter image description here

1 个答案:

答案 0 :(得分:1)

说实话,我总觉得使用因素有点令人沮丧。你犯的错误(以及之前我做过几次)是因为这不是你如何订购一个因子的水平,但出于某种原因,这是:

dm$cut <- factor(x = dm$cut, levels = c("Ideal",
                                        "Fair",
                                        "Very Good",
                                        "Premium",
                                        "Good"))
ggplot(dm, aes(x = cut, y = price)) + geom_violin()

enter image description here