将ggplot堆积条形图转换为饼图或替代形式

时间:2014-03-01 10:37:52

标签: r graph ggplot2

我无法决定如何绘制我的数据图表。 它由代表人口的重叠数量组成,因此我决定使用堆积条。

这些代表六个人口部门(“团体”),其中第1组和第2组是主要部门。第4至6组是两个子组,这些是彼此的子组。其简单的图表如下:

注意:组1和组2完成整个人口或组1 +组2 = 100%。

enter image description here

我希望所有这些信息都在一个图表中,我不知道该怎么做以及如何实现。

到目前为止,我有下面的那个,这是错误的,因为第1组包含在主栏中。

require(ggplot2)
require(reshape)

tab <- data.frame(
  set=c("XXX","XXX","XXX","XXX","XXX","XXX"),
  group=c("1","6","5","4","3","2"),
  rate=as.numeric(c(10000,20000,50000,55000,75000,100000))
)

dat <- melt(tab)
dat$time <- factor(dat$group,levels=dat$group)

ggplot(dat,aes(x=set)) +
  geom_bar(aes(weight=value,fill=group),position="fill",color="#7F7F7F") +
  scale_fill_brewer("Groups", palette="OrRd")

enter image description here

你们有什么建议可视化它?我想使用R和ggplot与我已经制作的其他图表保持一致性和一致性。

2 个答案:

答案 0 :(得分:1)

使用facet可以将你的情节分成两部分:

# changed value of set for group 1
tab <- data.frame(
  set=c("UUU","XXX","XXX","XXX","XXX","XXX"),
  group=c("1","6","5","4","3","2"),
  rate=as.numeric(c(10000,20000,50000,55000,75000,100000))
)

# explicitly defined id.vars
dat <- melt(tab, id.vars=c('set','group'))
dat$time <- factor(dat$group,levels=dat$group)

# added facet_wrap, in geom_bar aes changed weight to y, 
# added stat="identity", changed position="stack"
ggplot(dat,aes(x=set)) +
  geom_bar(aes(y=value,fill=group),position="stack", stat="identity", color="#7F7F7F") +
  scale_fill_brewer("Groups", palette="OrRd") +
  facet_wrap(~set, scale="free_x")

visual with facet and changes

答案 1 :(得分:0)

我猜你需要的是树形图。如果我误解了你的问题,请纠正我。 这里有一个关于Treemapping的链接] 1

如果你需要树形图,你可以使用投资组合套餐或googleVis。