Визуализировать в R поток от одного набора объектов к другому
Меня интересует, как гранты рассматриваются в NIH. Процесс рассмотрения грантов работает так, что Конгресс выделяет средства различным институтам (например, Национальному институту рака или NCI), и индивидуальные гранты направляются в эти институты. Эти институты организованы вокруг различных приоритетов финансирования (например, рак, инфекционные заболевания и т. Д.).
Однако, когда гранты пересматриваются, они, как правило (но не всегда), направляются в отдельные учебные секции, которые организованы в большей степени вокруг научных дисциплин. Таким образом, раздел "Прогрессирование опухоли" может рассматривать гранты как Национального института рака, так и Национального института сердца, легких и крови (NHLBI), если исследователь отправляет грант в NHLBI для изучения лейкемии.
У меня есть фрейм данных в R, который выглядит примерно так:
grant_id <- 1:100
funding_agency <- sample(rep(c("NIAID", "NIGMS", "NHLBI", "NCI", "NINDS"), 20))
study_section <- sample(rep(c("Tumor Cell Biology", "Tumor Progression",
"Vector Biology", "Molecular Genetics",
"Medical Imaging", "Macromolecular Structure",
"Infectious Diseases", "Drug Discovery",
"Cognitive Neuroscience", "Aging and Geriatrics"),
10)
)
total_cost <- rnorm(100, mean = 30000, sd = 10000)
d <- data.frame(grant_id, funding_agency, study_section, total_cost)
some(d)
grant_id funding_agency study_section total_cost
15 15 NINDS Vector Biology 25242.19
19 19 NCI Infectious Diseases 29075.21
50 50 NCI Drug Discovery 25176.35
62 62 NCI Tumor Progression 14264.34
64 64 NIAID Tumor Cell Biology 30024.13
Я хотел бы создать две визуализации этих данных, надеюсь, используя R; один показывает, как гранты, которые подаются в отдельные институты, распределяются между учебными секциями, а второй показывает долларовую сумму грантов, которые присваиваются институтами для учебных секций. В конечном итоге мне нужна диаграмма, которую вы видите на следующих веб-сайтах:
Колледж майор на работу трубопроводов
Кто-нибудь знает о пакете R и / или имеет некоторый пример кода для создания диаграммы, как вы найдете на сайтах выше? В качестве альтернативы, есть ли другая визуализация, которую я должен рассмотреть, чтобы достичь тех же целей?
2 ответа
Вот как это сделать с rCharts
, Вы можете посмотреть финальный SankeyPlot здесь
d <- data.frame(
id = grant_id,
source = funding_agency,
target = study_section,
value = total_cost
)
# devtools::install_github("rCharts", "ramnathv", ref = "dev")
require(rCharts)
sankeyPlot <- rCharts$new()
sankeyPlot$setLib('http://timelyportfolio.github.io/rCharts_d3_sankey')
sankeyPlot$set(
data = d,
nodeWidth = 15,
nodePadding = 10,
layout = 32,
width = 750,
height = 500,
labelFormat = ".1%"
)
sankeyPlot
Чтобы сохранить график, вы можете сделать
sankeyPlot$save('mysankey.html')
С визуализацией ничего не могу поделать, но вы ищете двухстороннюю таблицу для данных.
Использование пакета reshape2 и игнорирование grant_id
d1 <- melt(d[,2:4])
d2 <- dcast(d1, study_section~funding_agency,sum)
> d2
study_section NCI NHLBI NIAID NIGMS NINDS
1 Aging and Geriatrics 28598.04 76524.55 0.00 109492.59 138330.12
2 Cognitive Neuroscience 76484.18 88217.42 78126.55 71546.62 73132.14
3 Drug Discovery 43667.30 39683.03 23797.24 46363.75 105655.61
4 Infectious Diseases 65375.44 136462.03 96413.08 34653.48 13835.22
5 Macromolecular Structure 84308.64 42290.61 39886.87 61645.00 67550.41
6 Medical Imaging 26264.32 86736.36 106356.13 41001.21 35549.83
7 Molecular Genetics 49473.72 0.00 110201.52 69468.03 86688.24
8 Tumor Cell Biology 99930.88 50862.39 95394.23 26269.98 46944.60
9 Tumor Progression 58719.89 52669.80 86874.89 0.00 119264.59
10 Vector Biology 64251.66 30880.81 66734.26 125524.72 0.00
Это говорит о том, какой раздел study_section получил грант от какого финансирующего агентства. Теперь, как отобразить это другой вопрос. Может быть, проверить http://statmath.wu.ac.at/projects/vcd/