R 彩色叠加条形图

R 彩色叠加条形图,r,ggplot2,R,Ggplot2,我想以堆叠条形图的形式将以下信息可视化,x轴具有不同的区域,条形图上用不同类型的伤害总数着色 这里是数据的文本表示 自治区 陪审团 tcycinjury 外伤 布朗克斯 3975 959 11197 布鲁克林 8781 3978 25822 曼哈顿 6607 3164 8698 皇后区 5893 1993 21092 斯塔顿岛 653 101 3528 首先,将数据放入data.frame: data <- data.frame(BOROUGH = c("BRONX", "BROOKLYN

我想以堆叠条形图的形式将以下信息可视化,x轴具有不同的区域,条形图上用不同类型的伤害总数着色

这里是数据的文本表示

自治区 陪审团 tcycinjury 外伤

布朗克斯 3975 959 11197

布鲁克林 8781 3978 25822

曼哈顿 6607 3164 8698

皇后区 5893 1993 21092

斯塔顿岛 653 101 3528


首先,将数据放入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))
为了便于绘图,我们需要长格式。我喜欢使用
tidyr
软件包中的
gather()
,但是还有其他几个函数也可以做同样的事情,所以请选择

data <- gather(data, "injurytype", "number", -BOROUGH)
使用
geom_bar(stat=“identity”)
fill=injurytype
获得堆叠条形图

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

使用
条形图
功能可以实现这一点,但您需要首先重塑数据

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

欢迎使用堆栈溢出!请使用
dput
对我们可以从您的问题中剪切和粘贴的数据进行文本表示,而不是要求我们重新键入数据的图像。使用数据更新了提问
ggplot(data, aes(x=BOROUGH, y=number, fill = injurytype)) + 
  geom_bar(stat = "identity")
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")