簡體   English   中英

帶有networkD3包的Sankey Diagram不會繪圖

[英]Sankey Diagram with networkD3 package will not plot

我在R中的networkD3包中使用sankeyNetwork函數,使用此處的代碼作為示例。 但是,我得到的只是一個空白屏幕。 該圖應該顯示年齡組之間的感染流量(按性別)。 我的代碼如下:

library(RCurl)
library(networkD3)

edges <- read.csv(curl("https://raw.githubusercontent.com/kilimba/data/master/infection_flows.csv"),stringsAsFactors = FALSE )

nodes = data.frame(ID = unique(c(edges$Source, edges$Target)))

nodes$indx =0
for (i in 1:nrow(nodes)){
  nodes[i,]["indx"] = i - 1
}

edges2 <- merge(edges,nodes,by.x = "Source",by.y = "ID")
edges2$Source <-NULL
names(edges2) <- c("target","value","source")
edges2 <- merge(edges2,nodes,by.x = "target",by.y = "ID")
edges2$target <- NULL
names(edges2) <- c("value","source","target")

nodes$indx <- NULL
# Plot
sankeyNetwork(Links = edges2, Nodes = nodes,
              Source = "source", Target = "target",
              Value = "value", NodeID = "ID",
              width = 700, fontsize = 12, nodeWidth = 30)

您確定R控制台中沒有打印錯誤嗎?

這適用於我兩個小修改:

  1. 在開始時也加載卷曲包

     library("curl") 
  2. fontsize參數顯然不起作用,應該刪除。

     # Plot sankeyNetwork(Links = edges2, Nodes = nodes, Source = "source", Target = "target", Value = "value", NodeID = "ID", width = 700, #fontsize = 12, nodeWidth = 30) 

調整fontsize確實有效,但你的參數缺少大小寫:fontSize

sankeyNetwork(Links = edges2, Nodes = nodes,
  Source = "source", Target = "target",
  Value = "value", NodeID = "ID",
  width = 700, fontSize = 12,
  nodeWidth = 30)

我通過確保源,目標和值都是數字來解決它。

例如:Energy $ links $ value < - as.numeric(Energy $ links $ value)

  1. 你不需要RCurlread.csv能夠直接從URL讀取
  2. 在創建節點data.frame時,使用stringsAsFactors = FALSE選項可能更安全
  3. 正如其他人所指出的那樣,你必須確保鏈接數據中的源和目標變量是數字的,並且它們是零索引的
  4. 正如其他人所指出的那樣,font size參數被正確地命名為fontSize
  5. 我提供了一種更直接的方法,用節點data.frame中的節點的數字索引創建鏈接數據
library(networkD3)

edges <- read.csv("https://raw.githubusercontent.com/kilimba/data/master/infection_flows.csv",stringsAsFactors = FALSE)

nodes = data.frame(ID = unique(c(edges$Source, edges$Target)), stringsAsFactors = FALSE)

edges$Source <- match(edges$Source, nodes$ID) - 1
edges$Target <- match(edges$Target, nodes$ID) - 1

sankeyNetwork(Links = edges, Nodes = nodes,
              Source = "Source", Target = "Target",
              Value = "Value", NodeID = "ID",
              width = 700, fontSize = 12, nodeWidth = 30)

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM