堆积的条形图与颜色和

时间:2017-03-05 19:20:49

标签: r ggplot2

我希望以堆积条形图的形式显示以下信息,其中x轴具有不同的区域,并且条形图用不同类型的伤害总数着色

数据的文本表示在这里

BOROUGH tpedinjury tcycinjury tminjury

BRONX 3975 959 11197

BROOKLYN 8781 3978 25822

MANHATTAN 6607 3164 8698

QUEENS 5893 1993年 21092

STATEN ISLAND 653 101 3528

enter image description here

2 个答案:

答案 0 :(得分:0)

首先,将数据导入data.frame:

data <- data.frame(BOROUGH = c("BRONX", "BROOKLYN", "MANHATTAN", "QUEENS", "STATEN ISLAND"),
           tpedinjury = c(3975, 8781, 6607, 5893, 653),
           tcycinjury = c(959, 3978, 3164, 1993, 101),
           tminjury = c(11197, 25822, 8698, 21092, 3528))

以下是这样的:

> data
        BOROUGH tpedinjury tcycinjury tminjury
1         BRONX       3975        959    11197
2      BROOKLYN       8781       3978    25822
3     MANHATTAN       6607       3164     8698
4        QUEENS       5893       1993    21092
5 STATEN ISLAND        653        101     3528

为了便于绘图,我们希望它采用长格式。我喜欢使用gather()包中的tidyr,但还有其他一些功能也可以做同样的事情,所以请选择。

data <- gather(data, "injurytype", "number", -BOROUGH)

现在数据看起来像这样:

> data
         BOROUGH injurytype number
1          BRONX tpedinjury   3975
2       BROOKLYN tpedinjury   8781
3      MANHATTAN tpedinjury   6607
4         QUEENS tpedinjury   5893
5  STATEN ISLAND tpedinjury    653
6          BRONX tcycinjury    959
7       BROOKLYN tcycinjury   3978
8      MANHATTAN tcycinjury   3164
9         QUEENS tcycinjury   1993
10 STATEN ISLAND tcycinjury    101
11         BRONX   tminjury  11197
12      BROOKLYN   tminjury  25822
13     MANHATTAN   tminjury   8698
14        QUEENS   tminjury  21092
15 STATEN ISLAND   tminjury   3528

geom_bar(stat = "identity")fill = injurytype一起使用以获得堆积条形图。

ggplot(data, aes(x=BOROUGH, y=number, fill = injurytype)) + 
  geom_bar(stat = "identity")

stacked barplot

答案 1 :(得分:0)

barplot函数会执行此操作,但您需要先重新整形数据。

Dat2 = t(df[,2:4])
colnames(Dat2) = df$BOROUGH
barplot(Dat2, col=rainbow(3), ylim=c(0,40000))
legend("topright", legend=names(df)[2:4], 
    pt.bg=rainbow(3), pch=22, bty="n")

Barplot of Injuries