【问题标题】:Data Preprocessing in ggplot2 [duplicate]ggplot2中的数据预处理[重复]
【发布时间】:2013-12-08 16:36:11
【问题描述】:

https://dl.dropboxusercontent.com/u/93667882/issue_data.csv 这是我在 R 中工作的 csv 文件,用于绘制堆积条形图。通过在 R 中手动输入数据,我能够做到这一点。但我很难处理 csv 文件以使其适合 ggplot2。

我想为每个 BU、每个国家、每个部门绘制三个不同的堆叠条形图,其中每个条形图是全部的 100%,其余的关键、错误、警告、评论应该根据它们在ALL。

注意:全部=严重+错误+警告+审查。

【问题讨论】:

  • 在我对您其他问题的回答下方查看我的 cmets。向我们展示一些努力。如果您查看下面的答案(实际上与我的答案几乎相同)并将此答案与我对您其他问题的答案结合起来,那么您的问题应该得到完全解决。

标签: r csv plot ggplot2


【解决方案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") 

【讨论】:

  • 感谢您的快速回复。但我想要 Y Asis 中的百分位数格式。如何做呢。我是 R 的新手
  • @KoushikSaha 你只想要 y 轴的其他标签吗?
  • No no bar 不应该算数。它应该是这样的百分比dl.dropboxusercontent.com/u/93667882/Plot1.png
  • @KoushikSaha 查看我的答案更新。
猜你喜欢
  • 2013-05-06
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 2018-07-28
  • 2020-06-13
  • 2022-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多