首页 文章

摘要数据中的小提琴图

提问于
浏览
0

我想使用一个小提琴图来按地点(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个灰色框),用于小提琴情节?

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

Update

根据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 回答

  • 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()
    

相关问题