首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中使用networkD3添加轴标签

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

Stack Overflow用户
提问于 2022-01-27 22:50:14
回答 1查看 180关注 0票数 1

我正在使用networkD3包制作一个Sankey图,我在下面包含了我的代码。我想添加一个标题,脚注,和标签的左边和右边的关系图。但我不知道如何做到这一点,因为networkD3没有内置的标记命令

代码语言:javascript
复制
library(dplyr)
library(networkD3)
library(htmlwidgets)
Comp_Noncomp<-c("A","B","C","A","B","C","A","B","C")
Category<-c("D","E","F","D","E","F","D","E","F")
Frequency<-c(1,2,3,4,5,6,7,8,9)
my.data.3<-data.frame(Comp_Noncomp,Category,Frequency)
nodes <- data.frame(name=c(as.character(my.data.3$Comp_Noncomp), as.character(my.data.3$Category)) %>% unique())
my.data.3$IDsource=match(my.data.3$Comp_Noncomp, nodes$name)-1 
my.data.3$IDtarget=match(my.data.3$Category, nodes$name)-1
library(networkD3)
sankeyNetwork(Links = my.data.3, Nodes = nodes,
                     Source = "IDsource", Target = "IDtarget",
                     Value = "Frequency", NodeID = "name", 
                     sinksRight=FALSE)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-28 19:33:14

您可以使用库htmlwidgetshtmltools向此关系图添加内容。

例如,如果您想添加一个标题:

代码语言:javascript
复制
s <- sankeyNetwork(Links = my.data.3,  Nodes = nodes, 
                   Source = "IDsource",  Target = "IDtarget", 
                   Value = "Frequency",  NodeID = "name",  
                   sinksRight=FALSE)

s2 <- htmlwidgets::prependContent(s, htmltools::tags$h1("This is my Title"))

假设您想要添加样式和字幕。

代码语言:javascript
复制
s3 <- htmlwidgets::prependContent(s, htmltools::tags$h1("This is my Title",
                                                       style="text-align:center;"),
                                 htmltools::tags$h2("This is my Subtitle",
                                                    style="color:#003b70; text-align:center;"))

你可以用它做很多事情,但你必须稍微探索一下,才能准确地找出你想要的东西和想要的地方。

根据您的评论更新

添加左、右注释的最简单方法可能是使用库manipulateWidget

您将希望恢复到原来的Sankey关系图,因为它将删除任何预先添加或附加的内容。

我把文字垂直地放在左边。在右边,我让系统选择位置。通过这种方式,您可以看到对内容的不同方式。

代码语言:javascript
复制
s <- sankeyNetwork(Links = my.data.3,  Nodes = nodes, 
                   Source = "IDsource",  Target = "IDtarget", 
                   Value = "Frequency",  NodeID = "name",  
                   sinksRight=FALSE)

leftTx = tags$div( 
  style="max-width: 30vw; padding-bottom: 15px; height: 100%; display: flex; align-items: center; justify-content: center;", 
                  tags$p("This text is on the left side"))
rightTx = tags$p("This text is on the right",
                 style="max-width:30vw")

cS <- combineWidgets(s,
                     title = tags$h1("This is my Title",
                                     style="text-align:center;"),
                     leftCol = leftTx,
                     rightCol = rightTx,
                     nrow = 1)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70886801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档