Текстовые элементы могут изменить мое добавление скрипта onRender
из пакета htmlwidgets
. Эта функция позволяет запускать дополнительные функции javascript для выбора и изменения элементов с помощью D3. Структура функции:
p <- onRender(myplot,'function(el, x){
...
}')
Используя этот пример, вы можете выбрать метки, используя d3.selectAll
(при этом возвращается каждый элемент; используйте d3.select()
только для одного элемента или только для первого элемента).
// Sankey selector for node labels
d3.selectAll(".node text")
Изменение цвета элемента <text>
можно выполнить с помощью style('some prop', 'some value')
. Например, допустим, мы хотим изменить текст на blue
.
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");