Amchart 4 оси - PullRequest
       7

Amchart 4 оси

0 голосов
/ 09 января 2019

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

https://www.amcharts.com/demos/stacked-area/

но что, если для каждого диапазона оси есть несколько дат начала и окончания? можно ли их отобразить? например:

  • 1994- Штрафы за превышение скорости увеличены
  • 1995 - введена плата за мотоцикл
  • 1996- Штрафы за превышение скорости увеличены
  • 1997 - введена плата за мотоцикл
  • 1998- Штрафы за превышение скорости увеличены

Этот код не работает. У меня есть 2 диапазона осей теста а и теста б.

function createRange(axis, from, to, title) {
  var range = axis.axisRanges.create();
  range.value = from;
  range.endValue = to;
  range.grid.stroke = chart.colors.getIndex(7);
  range.grid.strokeOpacity = 0.6;
  range.grid.strokeDasharray = "5,2";
  range.label.text =  title;
  range.label.inside = true;
  range.label.rotation = 90;
  range.label.horizontalCenter = "right";
  range.label.verticalCenter = "middle";
}

createRange(dateAxis, new Date(Date.parse(testa_start)), new Date(Date.parse(testa_end)), "Test A");
createRange(dateAxis, new Date(Date.parse(testb_start)), new Date(Date.parse(testb_end)), "Test B");

Пожалуйста, помогите. очень ценю это. Спасибо

1 Ответ

0 голосов
/ 19 февраля 2019

Вы должны установить range.date вместо range.value.

См. Полный рабочий код ручки с фиксированной функцией.

function createRange(axis, from, to, title) {
    var range = axis.axisRanges.create();
    range.date = from;
    range.endValue = to;
    range.grid.stroke = chart.colors.getIndex(7);
    range.grid.strokeOpacity = 0.6;
    range.grid.strokeDasharray = "5,2";
    range.axisFill.fill = chart.colors.getIndex(7);
    range.axisFill.fillOpacity = 0.2;
    range.label.text =  title;
    range.label.inside = true;
    range.label.rotation = 90;
    range.label.horizontalCenter = "right";
    range.label.verticalCenter = "middle";
}

createRange(dateAxis, new Date(2005, 1, 1), new Date(2007, 1, 1), 'Test');
...