群集x轴条形图

时间:2018-10-20 10:33:48

标签: r ggplot2 bar-chart

将不同类别(商店)的A-H分为出售的黑色衬衫和出售的非黑色衬衫:

1 (for A-H)
0.8600394
0.5191401
0.5200601
0.1275694
0.4371994
0.4352312
0.4994585
0.08854391



0 (for A-H)
0.6368297
0.4958072
0.4068714
0.3631703
0.3498011
0.2870286
0.4980114
0.05199099

在R中: 我想绘制一个图表,在该图表中我在x轴上显示所有类别,并且每一个我显示2条,一个代表黑衬衫,一个代表非黑衬衫。有人可以帮忙吗?谢谢!

从下面的步骤为我的数据绘制它会起作用(这是从另一个回答的问题中得出)

dat <- data.frame(country=c('USA','Brazil','Ghana','England','Australia'), Stabbing=c(15,10,9,6,7), Accidents=c(20,25,21,28,15), Suicide=c(3,10,7,8,6))

dat.m <- melt(dat, id.vars='country').

我认为直接从桌子上绘制可能会更优雅。

1 个答案:

答案 0 :(得分:0)

正如其他人所说,您应该以一种易于使用的格式存储数据。

无论如何,这里:

library(tidyverse)
dat <- data.frame(country=c('USA','Brazil','Ghana','England','Australia'),
Stabbing=c(15,10,9,6,7), Accidents=c(20,25,21,28,15), Suicide=c(3,10,7,8,6)) 
dat

Gather用于将其转换为长格式:

dat.m <- dat %>%   gather(crime, number, 2:4)
dat.m

基本ggplot:

ggplot (dat.m, aes(x = country, y = number, fill = crime)) + geom_bar(stat ="identity")

在您的问题中,您提到了均值,但是使用此数据,您没有足够的数据来按国家(地区)和均值进行操作,但这是按国家(地区)代码:

dat.m <- dat.m %>% 
  group_by(country) %>% 
  summarise(mean = mean(number))
dat.m

然后只需更改ggplot中的变量即可。