1

我有这个数据:

> 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)

得到这个情节

如何制作相同的图,其中数据会在图上减少,并且 x 轴上不会有单词或者它们会是垂直的?(我的英语还不是很好,抱歉解释不好)

4

2 回答 2

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())

结果图

于 2014-05-25T18:20:54.893 回答
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))

这使:

在此处输入图像描述

于 2014-05-25T18:16:58.790 回答