Plotly. js: обновить текст каждого узла, используя рестайл - PullRequest
2 голосов
/ 31 января 2020

Возможно ли обновить текст внутри древовидной карты , используя функцию рестайла? Я знаю, что это возможно с помощью функции «реакция», но эта функция перерисовывает всю диаграмму (я не хочу, чтобы это произошло). Это то, что я до сих пор: https://codepen.io/elv1s42/pen/yLydprX

var labels = ["P1", "P2", "P3", "P4"]; 
var parents = ["", "P1", "P1", "P2"];
var data = [{
      type: "treemap",
      labels: labels,
      parents: parents,
      marker: { colors: ['green', 'blue', 'red', 'yellow']},
      text: ['text1', 'text2', 'text3<br>text3', 'text4'],
      textinfo: "label text"
    }];
var layout = {};
Plotly.newPlot('myDiv', data, layout)
function changeText(){
    var upd = { 
      marker: {colors: ['white', 'orange', 'green', 'red']},
      //text: ['t1', 't2', 't3', 't4'] // how to update the text?
    };
    Plotly.restyle('myDiv', upd);
}
<head>
    <!-- Load plotly.js into the DOM -->
    <script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
</head>

<body>
  <button onclick='changeText()'>Change my plot!</button>
    <div id='myDiv'><!-- Plotly chart will be drawn inside this DIV --></div>
</body>

1 Ответ

1 голос
/ 03 февраля 2020

Мне не нравится отвечать на мои собственные вопросы, но проблема была решена https://github.com/etpinard из GitHub здесь: https://github.com/plotly/plotly.js/issues/4535

Итак, работающие решение состоит в том, чтобы использовать вложенные массивы для поля text:

function changeText(){
    var upd = { 
      marker: {colors: ['white', 'orange', 'green', 'red']},
      text: [['t1', 't2', 't3', 't4']] // how to update the text?
    };
    Plotly.restyle('myDiv', upd);
}

Пример CodePen из этого вопроса исправлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...