【发布时间】:2018-12-18 08:16:43
【问题描述】:
按照此处Change the color of the legend text in forceNetwork for networkD3 的帖子,我正在尝试将本地驱动器中的图片添加为背景图像,并为图表添加标题。
但是,这些行似乎没有生效:
Background: .style("background-image", "url(C:\\Desktop\\BGP.png)")
Title: htmlwidgets::prependContent(htmltools::tags$h1("Title"))
添加它们的正确方法是什么?另外,有没有办法调整标题文本的字体样式和大小?
library(networkD3)
library(htmlwidgets)
subNodes <-
read.table(stringsAsFactors = FALSE, header = TRUE, text = "
nodeName nodeGroup nodeSize
Bob NorthAmerica 10
Alice NorthAmerica 10
Tom China 10
John Japan 10
")
subLinkList <-
read.table(stringsAsFactors = FALSE, header = TRUE, text = "
root children linkValue
0 1 1
0 2 1
0 3 1
")
linkJS <- JS('
function(){
d3.select("body")
.style("background-image", "url(C:\\Desktop\\BGP.png)")
.style("background-repeat", "no-repeat")
.style("background-position", "right bottom")
return 100;
}')
network <- forceNetwork(Links = subLinkList, Nodes = subNodes,
Source = "root", Target = "children",
Value = "linkValue", NodeID = "nodeName",
Group = "nodeGroup",
opacity = 1, Nodesize = "nodeSize",
legend = TRUE, linkDistance = linkJS,
colourScale = JS("d3.scaleOrdinal(d3.schemeCategory20)"))
network1 <- htmlwidgets::onRender(
network,
'function(el, x) {
d3.selectAll(".legend text").style("fill", "white");
d3.select("body").style("background-color", "#144370");
}',
htmlwidgets::prependContent(htmltools::tags$h1("Title"))
)
saveNetwork(network1, "c:\\forceNetwork.html", selfcontained = TRUE)
【问题讨论】:
-
文件的 URL 可能需要以“file:///”开头,以告诉浏览器查找本地文件。但即便如此,您的浏览器也可能不允许加载绝对本地文件 URL。
-
这个答案可能有助于将文件放在正确的位置并使用相对 URL...stackoverflow.com/a/49669260/4389763
-
@CJYetman,感谢您的评论。能否请您也帮助“标题”部分?
-
这是一种非常相似的文本样式技术:stackoverflow.com/a/50678496/4389763
-
@CJYetman,我尝试了不同的编辑,但仍然无法获得它。
标签: javascript r d3.js htmlwidgets networkd3