Search code examples
rggplot2ggplotly

ggplot doesn't plot the order of the data.frame


If I have a head(df) like:

    feature Comparison   Primary       diff key
1     work  15.441176 20.588235  5.1470588   1
2 employee  22.794118 19.117647 -3.6764706   2
3     good  11.029412 11.764706  0.7352941   3
4  improve   8.088235 10.294118  2.2058824   4
5   career   2.941176  8.823529  5.8823529   5
6  manager   2.941176  8.823529  5.8823529   6

and I'm trying to plot something with:

 p = ggplot(x, aes(x = feature,size=8)) + geom_point(aes(y = Primary)) +
        geom_point(aes(y=Comparison)) + coord_flip()
      ggplotly(p)

Is there something I'm missing that causes p not to plot the order of the data above? the first five on the plot are

work
train
time
skill
people

But according to the df, it should be work, employee, good, improve, career.


Solution

  • There are these things called "levels" which ggplot uses to determine the order things should appear in the plot. If you ran levels(x$feature) in the console, then I bet the list you see has the same order as what appears in the plot.

    To have them show up in the order you want, you can just have to override the "levels" for the feature column.

    x$feature = factor(x$feature, levels = c("work",
                                             "employee",
                                             "good",
                                             "improve",
                                             "manager"))