У меня есть 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 набора данных будут меняться со временем, не хочу нужно вручную обновить их или программно обновить.
Мне кажется, что это должно быть довольно распространенным требованием к данным, и, возможно, кто-то другой хорошо настроил хорошее решение?