繁体   English   中英

摘要数据中的小提琴图

[英]Violin plot from summary data

我想使用小提琴图以以下格式(年份为现在)来可视化按地点(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

有没有一种有效的方法可以将摘要数据框(第一个灰色框)转换为逐个观察数据框(第二个灰色框)以用于小提琴图?

或者,是否有一种方法可以根据第一个灰色框中格式设置的数据制作小提琴图?

更新

使用eipi10提供的答案,如果站点A或B的伪像为零(如上述22700年的更新示例),则会出现以下错误:

Error in data.frame(Year = rep(dat$Year[i], dat$value[i]), Site = dat$key[i]) : 
  arguments imply differing number of rows: 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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM