在qplot中重新排序吧

时间:2014-05-25 17:59:14

标签: r plot ggplot2 geom-bar

我有这些数据:

> result_Q1_data
     HARM              TYPE
834 96979           TORNADO
130  8428    EXCESSIVE HEAT
856  7461         TSTM WIND
170  7259             FLOOD
464  6046         LIGHTNING
275  3037              HEAT
153  2755       FLASH FLOOD
427  2064         ICE STORM
760  1621 THUNDERSTORM WIND
972  1527      WINTER STORM

我想制作一个条形图。我正在使用这个命令:

qplot(TYPE,HARM,data=result_Q1_data,stat="identity",geom="bar", fill=EVTYPE)

并获取此plot

如何绘制相同的绘图,其中数据在绘图上会减少,并且x轴上没有单词或者它们是垂直的? (我还不擅长英语,对不起解释感到抱歉)

2 个答案:

答案 0 :(得分:4)

我建议你使用ggplot函数,但是如果你想使用qplot。您需要重新排序因子TYPE的级别并删除x轴的标签。

result_Q1_data = data.frame(
    'id' = c(834, 130, 856, 170, 464, 275, 153, 427, 760, 972),
    'HARM' = c(96979, 8428, 7461, 7259, 6046, 3037, 2755, 2064, 1621, 1527),
    'TYPE' = factor(c('TORNADO', 'EXCESSIVE HEAT', 'TSTM WIND', 'FLOOD', 'LIGHTNING',
       'HEAT', 'FLASH FLOOD', 'ICE STORM', 'THUNDERSTORM WIND', 
       'WINTER STORM')))

result_Q1_data$TYPE = factor(result_Q1_data$TYPE, 
         levels = result_Q1_data$TYPE[order(result_Q1_data$HARM, decreasing=T)])

qplot(TYPE,HARM,data=result_Q1_data,stat="identity",geom="bar", fill=TYPE) + 
    theme(axis.ticks = element_blank(), axis.text.x = element_blank())

resulting plot

答案 1 :(得分:1)

我会使用ggplot而不是qplot命令。您可以对ggplot函数中的条形图进行重新排序:

ggplot(result_Q1_data, aes(x=reorder(TYPE,-HARM), y=HARM, fill=reorder(TYPE,-HARM))) +
  geom_bar(stat="identity") +
  theme(axis.text.x=element_text(angle=45, vjust=0.5))

给出:

enter image description here