Диаграммы Vega: необходимо получить значение инвертирования шкалы для строковых данных

У меня есть диаграмма рассеяния, где поля оси x и y выбираются пользователем, данные обрабатываются и объединяются в наш код, а ячейки, домены и т. Д. Передаются в Vega для визуализации. Но моя кисть выбора работает только с числовыми данными, а домены могут быть числовыми, строковыми или с датой и временем.

Есть ли способ заставить его работать для строковых данных? Мой код запускается через обратный вызов на слушателе сигнала, который слушает сигнал, который выглядит следующим образом: (извините, я не могу предоставить больше спецификации!)

{
  'name': 'sigName',
  'value': [], // 3 x 2 array of arrays [end coords, start data coords, end data coords]
  'on': [
    {
      'events':
      {
        'signal': 'endSig' // provides coords ( xy() ) for the mouseup event after dragging to create brush
      },
      'update': '[ slice(endSig), [invert("xScale", startSig[0]), invert("yScale", startSig[1])], [invert("xScale", endSig[0]), invert("yScale", endSig[1])] ]'
    }
  ]
}

person csgibson4    schedule 27.02.2019    source источник


Ответы (1)


Я не смог найти ответа, поэтому решил просто вернуть координаты начала и конца, а затем применить их к своему домену. Высота и ширина представления известны, поэтому я могу сделать что-то вроде этого для своих строковых доменов в моем обратном вызове:

xValue = (domain.length / this.view.width()) * xCoodinate
output = isStartCoordinate ? domain[Math.ceil(xValue)] : domain[Math.floor(xValue)]
person csgibson4    schedule 06.03.2019