https://dl.dropboxusercontent.com/u/93667882/issue_data.csv这是我在R工作的csv文件,用于绘制堆积条形图。通过在R中进行数据的maunal输入,我能够做到这一点。但我很难对csv文件进行处理,使其适合ggplot2。
我想绘制每个BU,每个国家/地区,每个分区的三个不同的堆叠条形图,其中每个条形将是100%的全部,其余的重要,错误,警告,评论应根据它们的贡献叠加在另一个之上ALL。
注意:全部=严重+错误+警告+审核。
答案 0 :(得分:1)
首先,您需要修改一些因子级别。这是必要的,因为某些级别包含空格(例如," CT "
应与"CT"
相同)
dat <- read.csv("issue_data.csv")
dat <- transform(dat, BU = gsub(" ", "", as.character(BU)),
Country = gsub(" ", "", as.character(Country)))
以下代码为BU
创建了一个图表。沿着BU
:
agg <- aggregate(cbind(Critical, Error, Warning, Review) ~ BU, dat, sum)
agg[-1] <- agg[-1] / rowSums(agg[-1]) # since you want bars of equal height
您可以使用reshape2
包轻松排列数据框:
library(reshape2)
dat2 <- melt(agg, id.vars = c("BU"),
measure.vars = c("Critical", "Error", "Warning", "Review"))
现在,可以创建情节。
library(ggplot2)
ggplot(dat2) +
geom_bar(aes(x = BU, y = value, fill = variable), stat = "identity")