当前位置: 首页 > 知识库问答 >
问题:

用`networkD3更改Sankey图表的颜色字体`

令狐新翰
2023-03-14

我想改变字体的颜色,或者在字体中添加阴影以提高可视性。然而,我还没有找到一种方法去做。一种替代方法是使用plotly,但当你将plotly对象放入闪亮的应用程序并在手机中可视化时,你会失去交互标签,因此networkD3提供了更好的集成。唯一的问题是,我很难个性化服装。我想改变字体颜色。

一个值得指责的例子:

library(networkD3)
URL <- paste0('https://cdn.rawgit.com/christophergandrud/networkD3/',
              'master/JSONdata/energy.json')
energy <- jsonlite::fromJSON(URL)

# Plot
sankeyNetwork(Links = energy$links, Nodes = energy$nodes, Source = 'source',
              Target = 'target', Value = 'value', NodeID = 'name',
              units = 'TWh', fontSize = 12, nodeWidth = 30)

共有1个答案

田化
2023-03-14

文本元素可以修改我从包中添加的htmlwidgetsonRenderscript。此函数允许您运行其他javascript函数,以使用D3选择和修改元素。此函数的结构为:

p <- onRender(myplot,'function(el, x){ 
    ...
}') 

使用该示例,您可以使用d3.selectAll选择标签(这将返回每个元素;对单个元素或仅第一个元素使用d3.select())。

// Sankey selector for node labels
d3.selectAll(".node text")

修改

d3.selectAll(".node text").style("fill", "blue") // or hex, rgb, hsl, etc.

使用上面的示例,以下是编写它的方法。

library(networkD3)
URL <- 'https://cdn.rawgit.com/christophergandrud/networkD3/master/JSONdata/energy.json'
energy <- jsonlite::fromJSON(URL)

# Plot
sankey <- sankeyNetwork(
  Links = energy$links, Nodes = energy$nodes, Source = 'source',
  Target = 'target', Value = 'value', NodeID = 'name',
  units = 'TWh', fontSize = 12, nodeWidth = 30
)

# render with js
sankey_rendered <- htmlwidgets::onRender(sankey,
  'function(el, x) {
    d3.selectAll(".node text")
        .style("fill", "blue");
  }'
)

# show
sankey_rendered

如果您想对标签做更多事情(即鼠标事件、点击),请将D3选择结果分配给一个变量。

var labels = d3.selectAll(".node text");

 类似资料:
  • 我使用了下面的 R 代码,并得到了下图。但我想将节点的颜色从绿色更改为黑色。我尽力找到一个相关的方法或参数,但没有找到一个。

  • 我无法弄清楚如何更改节点之间链接的颜色。好吧,我知道如何直接更改颜色,但似乎不知道如何将if语句放入Sankey的js代码中。 我需要一个if语句来使任何“值”高于30以具有红色链接,如果它们低于30,则为灰色或#000。 当值超过30时,这是我正在寻找的红色: 这是代码,我所说的值类似于:{“源”: 0,“目标”: 2,“值”: 33}

  • 我已经使用r中的networkd3创建了一个。如何更改流线或链接的颜色?我希望流线与节点的颜色相同。 以下是我的代码:

  • 本文向大家介绍iOS 更改图像的颜色,包括了iOS 更改图像的颜色的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答问题。 我下载了一个主题,在导航栏部分有很棒的字体图标。当我尝试更改图标的颜色时,它保持不变。 我试过了 但它不起作用。

  • 由于某些原因,图标不会变为红色。它保持白色/灰色。 有人知道如何把颜色变成红色吗? 还有很多其他问题没有提到我正在使用的“CSS伪元素”类型。