R中的子组箱图

时间:2015-06-04 20:32:07

标签: r ggplot2 visualization

我试图制作一个能够并排展示三件事的图形。首先是显示个人随时间的变化。接下来是显示其对等组随时间的变化。最后是显示整体人口随时间的变化。

每次观察我有四个时间点。我希望看到的是两组彼此相邻的箱形图,一组用于同行组,一组用于人口。对这些中的每一个都叠加了给定个体的数据点。每个集合将在time1,time2,time3和time4显示数据。叠加的点将传达每个人在每次的位置,因此信息可以在两组箱图中传达。

以下是模拟我正在使用的数据类型的代码,以及我创建情节的无效尝试。

peer <- c(rep(1, 15), rep(2, 41))
year <- rep(c(1, 2), 28)
pct <- rep(1:8, 7)
dat <- data.frame(cbind(peer, year, pct))

ggplot(dat, aes(peer==1, pct)) + geom_boxplot() + facet_grid(. ~ year)

我不认为我的ggplot方法接近正确。请帮忙!

这是我想要做的事情的草图。

sample

1 个答案:

答案 0 :(得分:3)

这是否接近您的想法?每个In [13]: points=2*np.random.rand(1e6,3)-1;hull=ConvexHull(points) In [14]: %timeit x=hit(np.ones(3),hull) #array([ 0.98388702, 0.98388702, 0.98388702]) 10000 loops, best of 3: 30 µs per loop 的{​​{1}}的每个值都有一个箱线图。我还列出了每组的平均值。

peer

enter image description here

您可以添加人口箱图,但随后情节开始变得混乱:

year

enter image description here

更新:根据您的评论,可能是这样的:

# Boxplots for each combination of year and peer, with means superimposed
ggplot(dat, aes(year, pct, group=interaction(year,peer), colour=factor(peer))) + 
  geom_boxplot(position=position_dodge(width=0.4), width=0.4) +
  stat_summary(fun.y=mean, geom="line", position=position_dodge(width=0.4), 
               aes(group=peer)) +
  stat_summary(fun.y=mean, geom="point", position=position_dodge(width=0.4), size=4, 
               aes(group=peer)) +
  scale_x_continuous(breaks=unique(dat$year)) 

这是第一张情节的样子:

enter image description here