ggplot2:在条形图中从最高到最低重新排序条形图

时间:2016-08-27 07:46:07

标签: r ggplot2

我得到了这个数字

enter image description here

按照similar question

的回答
library(ggplot2)
library(egg)

mydf <- transform(mydf, variables = reorder(variables, VIP, decreasing = T))

p1 <- 
  ggplot(mydf, aes(x = variables, y = VIP, group =1))+
  geom_bar(stat="identity") +
  geom_hline(yintercept = 1, size = 2, linetype = 3) +
  theme(axis.title.x =element_blank())
p2 <-
  ggplot(mydf, aes(x = variables, y = coefficient, group =1))+
  geom_point()+
  geom_line()+
  geom_hline(yintercept = 0, size = 2, linetype = 3) 

grid.draw(egg::ggarrange(p1,p2 , ncol=1))

我的目标是从高到低订购酒吧。

虽然我将variables and VIP从最高到最低排序,但是从最低到最高排序。

知道出了什么问题,并将条形从最低到最高分类?

数据

mydf <- read.table(text = c("
variables   VIP coefficient
diesel  0.705321    0.19968224
twodoors    1.2947119   0.3387236
sportsstyle 0.8406462   -0.25861398
wheelbase   1.3775179   -0.42541873
length  0.8660376   0.09322408
width   0.8202489   0.27762277
height  1.0140934   -0.12334574
curbweight  0.996365    -0.29504266
enginesize  0.8601269   -0.25321317
horsepower  0.7093094   0.16587358
horse_per_weight    1.2389938   0.43380122"), header = T)

1 个答案:

答案 0 :(得分:5)

问题是由于错误使用reorder

library(ggplot2)
library(egg)

mydf <- transform(mydf, variables = reorder(variables, -VIP))

p1 <- 
  ggplot(mydf, aes(x = variables, y = VIP))+
  geom_bar(stat="identity") +
  geom_hline(yintercept = 1, size = 2, linetype = 3) +
  theme(axis.title.x =element_blank())
p2 <-
  ggplot(mydf, aes(x = variables, y = coefficient, group = 1))+
  geom_point()+
  geom_line()+
  geom_hline(yintercept = 0, size = 2, linetype = 3) 

grid.draw(egg::ggarrange(p1,p2 , ncol=1))

enter image description here