摘要数据中的小提琴图

时间:2018-01-06 20:14:56

标签: r ggplot2

我想使用小提琴图来按地点(A和B)和世纪以下列格式显示考古文物的数量(年份在现在之前):

Year SiteA SiteB
22400 356 182
22500 234 124
22600 144 231
22700 12  0
...
24800 112  32

总共有6000件文物。在ggplot2中,对于小提琴情节来说,似乎首选数据输入格式是每个观察(人工制品)一行:

Site Year
A    22400
A    22400
... (356 times)
A    22400
B    22400
B    22400
... (182 times)
A    22500
A    22500
... (234 times)
A    22500
... ... ... (~5000 lines)
B    24800
B    24800
... (32 times)
B    24800

是否有一种将摘要数据框(第1个灰色框)转换为观察数据框(第2个灰色框)的有效方法,用于小提琴情节?

或者,有没有办法从第一个灰色框中格式化的数据制作小提琴图?

更新

根据eipi10提供的答案,如果A站点或B站点的人工制品为零(如上面更新的22,700例子),我会收到以下错误:

Error in data.frame(Year = rep(dat$Year[i], dat$value[i]), Site = dat$key[i]) : 
  arguments imply differing number of rows: 0, 1

情节看起来像这样:

enter image description here

1 个答案:

答案 0 :(得分:1)

这个怎么样:

library(tidyverse)

dat = read.table(text="Year SiteA SiteB
22400 356 182
                 22500 234 124
                 22600 144 231
                 24800 112  32", header=TRUE, stringsAsFactors=FALSE)

dat = gather(dat, key, value, -Year)

dat.long = data.frame(Year = rep(dat$Year, dat$value), Site=rep(dat$key, dat$value))

ggplot(dat.long, aes(Site, Year)) +
  geom_violin()