R语言 如何使用 networkD3 添加轴标签

R语言 如何使用 networkD3 添加轴标签

networkD3是一个用于创建D3(数据驱动文档)网络图的R包。netwrorkD3是使用htmlwidget包构建的。正如名字所说的网络,这个图可以以节点和边的数据框架的形式构建。然后它将进行物理模拟,以决定三维中最有利的图。它被用来创建D3 Javascript网络、树、树枝图、Sankey图等。

在R包中,已经有很多可视化库存在。例如,ggplot、Plotly、igraph等。但并不是所有的库都是用来创建网络型图的,而且也不是在三维图中。这就是为什么要制作它的主要目的。

语法: sankeyNetwork( Links, Nodes, Source, Target, Value, NodeID, NodeGroup = NodeID, LinkGroup = NULL, units = "", colorScale = NULL, fontSize = 7, fontFamily = NULL, nodeWidth = 15, nodePadding = 10, margin = NULL, height = NULL, wide = NULL, iterations = 32, sinksRight = TRUE )

参数

  • Links: 数据帧代表源和目标(节点)之间的链接。
  • Nodes: 数据帧包含节点属性
  • Source: 源节点的字符串
  • Target :目标节点的字符串
  • Value: 节点间距离值的字符串
  • NodeID: 节点名称
  • NodeGroup: 节点中的节点ID的字符串
  • **LinkGroup ** :组间链接的字符串
  • Units : 字符串,用于指定物理单位(值
  • colourscale: 指定颜色比例
  • nodeWidth: 节点的宽度
  • nodePadding: 节点之间的padding。
  • sinksRight: 布尔值。如果它是 “真”,最后一个节点会移动到图形的右边界。

创建一个带有标题、副标题和标签的简单sankeyNetwork图

第1步: 在Rstudio中导入必要的库。

library(dplyr)
library(networkD3)
library(htmlwidgets)
library(manipulateWidget)
library(htmltools)

第2步: 以源-目标数据框架的格式创建网络数据。

  • 在这里,我们将A->D、B->E和C->F节点连接起来,并在每个链接上分配3个值。最终的表将看起来像myDataframe表的图像。
  • 节点表包含了每个节点条目的唯一性。
  • IDsource和IDtarget是源节点和目标节点的字符串形式。
  • 但我们要用’-1’来减去,这样它就可以从第0个字符开始,比如A节点是0,B节点是1,以此类推。
# Create values
Source_Node <- c("A","B","C","A","B",
                 "C","A","B","C")
Target_category <- c("D","E","F","D",
                     "E","F","D","E","F")
Frequency <- c(1,2,3,4,5,6,7,8,9)
myDataframe <- data.frame(Source_Node,
                          Target_category,Frequency)
 
# Node table
nodes <- data.frame(name=c(as.character(myDataframeSource_Node),
                           as.character(myDataframeTarget_category))
                    %>% unique())
 
# IDsource and IDtarget string character format
myDataframeIDsource=match(myDataframeSource_Node,
                           nodesname)-1
myDataframeIDtarget=match(myDataframeTarget_category,
                           nodesname)-1

输出

如何在 R 中使用 networkD3 添加轴标签

第3步: 创建一个简单的Sankey网络图。

按照上述sankeyNetwork的语法,我们要指定一些参数来生成我们的输出。

graph1 <- sankeyNetwork(Links = myDataframe, 
                        Nodes = nodes,
                   Source = "IDsource",
                        Target = "IDtarget",
                   Value = "Frequency",
                        NodeID = "name", 
                   sinksRight=FALSE)
 
# view graph
graph1

输出

如何在 R 中使用 networkD3 添加轴标签

SankeyNetwork Graph

第4步: 在图1中添加标题和副标题。

  • 为了指定一个标题,我们可以使用htmlwidgets工具中的prependContent函数。
  • 创建两个带有文本描述和样式的h1和h2标签。
  • 在我们上面的graph1中预置这些标签,把所有这些标签放在pependContent函数中。
graph2 <- htmlwidgets::prependContent(graph1,
                                      htmltools::tagsh1(
                                        "GeeksForGeeks Title",
                                      style="text-align:center;
color:#007500; "),
                                      htmltools::tagsh2(
                                        "GeeksForGeeks Subtitle",
                                      style="color:#00D100;
text-align:center;"))
 
# view graph
graph2

输出

如何在 R 中使用 networkD3 添加轴标签

带有标题和副标题的SankeyNetwork图表

第5步: 在networkGraph中添加左和右标签。

  • 创建左标签为leftTx,右标签为rightTx。
  • 现在,为了结合leftTx、rightTx和graph2,使用来自manipulatewidget库的combinedWidget。
  • combineWidget将graph、title、left-column、right-column和row-number作为参数,并将所有这些实例合并成一个。

语法: combineWidgets( list = NULL, nrow = NULL, ncol = NULL, title = NULL, rowsize = 1, colsize = 1, byrow = TRUE, titleCSS = " ", header = NULL, footer = NULL, leftCol = NULL, rightCol = NULL, width = NULL, height = NULL )

# create left-right label
leftTx = tagsdiv(
         style="max-width: 30vw; height: 100%;
                 display: flex; align-items: center;
                 justify-content: center;",
         tagsp("This is left side label"))
 
rightTx = tagsp("This is right side label",
                   style="max-width:30vw")
 
# final output with label. combineWidget
# can be use by manipulateWidget.
graph3 <- combineWidgets(graph2,
                      title = tagsh1("With left-right label",
                      style="text-align:center;color:#007500;"),
                      leftCol = leftTx,
                      rightCol = rightTx,
                      nrow = 1)
 
# view graph
graph3

输出

如何在 R 中使用 networkD3 添加轴标签

输出时有左和右标签

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程