Получить данные для текущего масштабирования, если значения осей X и Y содержат строковые значения в диаграмме Plot.ly - PullRequest
0 голосов
/ 27 августа 2018

Ссылаясь на код, в этом сообщении Получить данные для текущего увеличенного представления на форуме Plot.ly, код помогает получить данные в текущем увеличенном виде, если оси X и Y содержат числовые значения.Как мы можем сделать то же самое для гистограммы в следующем Codepen .Здесь ось гистограммы содержит строковое значение.Есть ли способ получить данные из текущего масштаба, если x или y содержат строковые значения?

var data = [{
   x: ['giraffes', 'orangutans', 'monkeys', 'lion', 'tiger'],
   y: [20, 14, 23, 40, 13],
   type: 'bar'
}];

Plotly.newPlot('myDiv', data);

1 Ответ

0 голосов
/ 27 августа 2018

Вы можете использовать те же функции, что и раньше, но каждое целочисленное значение по оси X представляет одно значение в вашем категориальном списке.

var data = [
  {
    x: ["giraffes", "orangutans", "monkeys", "lions", "tigers"],
    y: [20, 14, 23, 40, 13],
    type: "bar"
  }
];
var gd = document.getElementById("myDiv");

Plotly.newPlot(gd, data);
function showVisibleAnimals()
{
  var outputDiv = document.getElementById("visibleAnimals");
  outputDiv.innerHTML = "Visible Animals:<br />";
  var xRange = gd.layout.xaxis.range;

  if (xRange[0] < 0) {
    xRange[0] = -1;
  }

  for (
    var i = parseInt(xRange[0]) + 1;
    i < parseInt(xRange[1]) + 1 && i < data[0].x.length;
    i++
  ) {
    outputDiv.innerHTML += data[0].x[i] + "<br />";
  }
}
showVisibleAnimals();
gd.on("plotly_relayout", function() {
  showVisibleAnimals();
});
<head>
  <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>

<body>
  <div id='visibleAnimals'></div>
  <div id="myDiv"><!-- Plotly chart will be drawn inside this DIV --></div>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...