Plotly. js как получить ось даты x с фиксированным диапазоном и фиксированным набором тиков, которые никогда не меняют положение, с данными Dynami c - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть Plotly. js диаграммы, где xaxis равен type: date. Я динамически подаю массивы на график, и каждый массив может иметь очень разное количество точек данных.

Цель состоит в том, чтобы позволить пользователю динамически просматривать разные массивы в одной и той же фиксированной неизменной диаграмме.

Единственное, что я хочу изменить, это диапазоны оси y. Но ось x должна быть фиксированной, с фиксированным положением и числом тиков. Например, он будет иметь 5 тиков в фиксированных местоположениях независимо от данных, поданных на график.

Сначала я подумал, что все, что мне нужно сделать, это зафиксировать диапазон оси x. Я сделал это в соответствии с другим SO ответом здесь . Я конвертировал конвертированные даты в unix миллисекунды, чтобы установить максимальный и минимальный диапазон следующим образом:

range:[
    new Date(minCaseDate).getTime(), 
    new Date(maxCaseDate).getTime()
],

Однако, после установки фиксированного диапазона, когда данные меняются, тики меняют положение вдоль оси x, и появляются разные # галочки.

См. Два скриншота моих диаграмм с различными двумя наборами данных ниже. Вы можете видеть, что галочки на оси x, кажется, смещают положение вдоль оси x. Также число тиков, кажется, изменяется.

Вот диаграммы с массивом № 1 в качестве источника данных:

Вот те же диаграммы с массивом № 2 в качестве источника данных:

Сюжетная документация подсказывает, что я могу получить то, что хочу. Я играл с tickmode, ntick, tick0, dtick, tickval и многими другими, но действительно изо всех сил пытался получить то, что я хочу.

Я до сих пор пытался сделать следующее:

  • tickmode: "auto" с nticks, установленным на что-то вроде "5", казалось наиболее очевидной игрой, но nticks не зафиксировано, это максимальное значение. Есть ли способ установить фиксированное значение nticks?

  • tickmode: "linear" с tick0, установленным на минимальное значение всего набора данных, но установка dtick была немного неопределенной. Это значение unix миллисекунды. Я попытался установить его на значение "5 дней", например, 5 * 86400000.0

Я еще не пробовал tickmode: "array", потому что мои значения по оси x набора данных будут меняться со временем, не хочу нужно вручную обновить их или программно обновить.

Мне кажется, что это должно быть довольно распространенным требованием к данным, и, возможно, кто-то другой хорошо настроил хорошее решение?

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