目前,我正努力用sankey图表来可视化晚期乳腺癌患者的抗癌治疗流程。
我为每一行治疗(beh1,beh2等)都有一个列,命名给定的治疗(6个选项或“其他”)。
然而,有些病人并没有接受我的df目前包含的所有6行治疗,因此在几个列中给出了一个N/A。
一个例子
sankey <- data.frame(ID = c("1","2","3","4","5"),
Beh1 = c("TDM1","Capecitabine", "Capecitabine", "Eribulin", "TDM1"),
Beh2 = c("Capecitabine", "NA", "Taxane", "Eksperimentiel", "Taxane"),
Beh3 = c("Eribulin", "NA", "Eribulin", "Eribulin", "Eribulin"))
和图表
SankeyDiagram(sankey[-1],
link.color = "Source",
variables.share.values = TRUE,)
我希望它能显示出来:
任何帮助都将不胜感激。
亲切的问候
发布于 2021-06-17 03:37:22
首先,我将转换您的data.frame,以便它包含因素而不是字符列和实际的NA
值,而不是字符"NA"
。
sankey <- data.frame(ID = c("1","2","3","4","5"),
Beh1 = c("TDM1","Capecitabine", "Capecitabine", "Eribulin", "TDM1"),
Beh2 = c("Capecitabine", NA, "Taxane", "Eksperimentiel", "Taxane"),
Beh3 = c("Eribulin", NA, "Eribulin", "Eribulin", "Eribulin"),
stringsAsFactors = TRUE)
如果使用SankeyDiagram
调用output.data.only = TRUE
,则会得到该函数用于生成图表的节点和链接。然后,您可以编辑链接以排除涉及NAs的链接,并使用修改后的链接调用SankeyDiagram
。将sinks.right = FALSE
添加到SankeyDiagram
调用可以确保"Beh1: Capecitabine“的第二个链接不会扩展到绘图的右侧。
links.and.nodes <- SankeyDiagram(sankey[-1], link.color = "Source", output.data.only = TRUE,
variables.share.values = TRUE, sinks.right = FALSE)
links.and.nodes$links <- od$links[!is.na(od$links$group), ]
SankeyDiagram(links.and.nodes = links.and.nodes, link.color = "Source",
variables.share.values = TRUE, sinks.right = FALSE)
发布于 2021-06-15 10:19:10
这是你想要的吗?
library(tidyverse)
# require(devtools)
# install_github("Displayr/flipPlots")
sankey <- data.frame(ID = c("1","2","3","4","5"),
Beh1 = c("TDM1","Capecitabine", "Capecitabine", "Eribulin", "TDM1"),
Beh2 = c("Capecitabine", "NA", "Taxane", "Eksperimentiel", "Taxane"),
Beh3 = c("Eribulin", "NA", "Eribulin", "Eribulin", "Eribulin"))
sankey %>%
dplyr::na_if("NA") %>%
tidyr::drop_na() %>%
dplyr::select(-1) %>%
SankeyDiagram(link.color = "Source",
variables.share.values = TRUE)
https://stackoverflow.com/questions/67984070
复制相似问题