Просматривая документацию Highstock, он говорит, что для xAxis есть softMin и softMax, но если я использую даты, он, похоже, не соответствует требуемым диапазонам дат.
Мне нужно было выполните следующие действия: найдите интервал данных xAxis, а затем добавьте в начало / конец массива нулевые данные в эти моменты времени, чтобы правильно передать информацию.
Это работает, но я полагал, что мягкие значения HighStock должны справиться с этим.
В примере использования: вы можете установить следующее:
{
chart: {
type: this.type || 'line',
},
title: {
text: this.title || ''
},
credits: {
enabled: false
},
rangeSelector: {
inputEnabled: false, // Specific to the Date Range Picker.
enabled: false // Specific to the Quick Selects for YTD, 6 mo, zoom.
},
navigator: {
adaptToUpdatedData: true
},
scrollbar: {
enabled: false
},
legend: {
enabled: true
},
xAxis: {
min: undefined,
max: undefined,
softMin: undefined,
softMax: undefined,
type: 'datetime',
dateTimeLabelFormats: {
day: '%b %e'
}
},
// yAxis: {
// title: { text: ''}, opposite: true, type: 'linear'
// },
plotOptions: {
series: {
dataGrouping: {
approximation: 'sum',
groupPixelWidth: 25,
forced: true,
units: [
['minute', [30]],
['day', [1, 7, 15]],
['month', [1, 3, 6]]
]
}
}
},
series: []
}
Так Я смотрю на даты, как если бы они были числами, new Date().getTime()
, но если я хочу установить softMin и softMax, я хотел бы сделать что-то вроде:
xAxis: {
softMin: new Date().getTime() - 1000 * 3600 * 24 * days_back
softMax: new Date().getTime()
}
где days_back - переменная, определяемая пользователем для того, как много дней назад, чтобы посмотреть.
То, как я выкладываю информацию о сериале, выглядит следующим образом:
const endtime = new Date().getTime(); //The current definition of endtime is now as there is no data for the future.
const starttime = endtime - 1000 * 3600 * 24 * days;
opts.series = dataset.map((item, idx, arr) => {
const name: string = item.name || '';
const data: any[] = item.data || []; // data is a list of lists. ][time_as_number, value],...]
if (data.length > 1) {
/// The purpose of this code block is to padd out the dataset to the start and end ranges.
/// While there is a softMin and softMax, it doesnt work too when with regards to dates.
/// This will padd the data to be represenative of the users base selection.
/// If the list of data has 0 or 1 points, there is not enough data to define an interval for the target range.
const difference = data[1][0] - data[0][0];
let low = data[1][0];
while (low > starttime) {
low -= difference;
data.unshift([low, null]);
}
let high = data[data.length - 1][0];
while (high < endtime) {
high += difference;
data.push([high, null]);
}
}
return {
marker: { enabled: true },
showInNavigator: true,
type: 'line',
name,
data
};
});
Есть ли что-то, чего мне не хватает, которое я должен принимать во внимание? min / max / minRange / maxRange в соответствии с документами - это не те ключи, которые я хотел назначить.
Для простоты понимания документация HighStock находится здесь: https://api.highcharts.com/highstock/xAxis.softMin
Вот пример: https://jsfiddle.net/sp18efkb/ В этом примере вы увидите, что я установил softMin, но он не отражается. Если я использую chart
объект, он работает. Кажется, что, хотя он действителен в соответствии с API, он не является допустимым или контролируемым свойством.