ACE, как изменить поведение кнопки масштабирования по оси X для TimeChart

Я использую метод ChartFactory.getTimeChartView из превосходной библиотеки achartengine. Я показываю записи только за последнюю неделю, позволяя пользователю перемещаться влево для просмотра предыдущих записей, используя свойство renderer.setXAxisMin(OneWeekBefore);.

У меня есть 2 вопроса:

a) Как разрешить масштабирование по оси X в TimeChart?
Я не могу масштабировать по оси X, несмотря на то, что масштабирование включено как для оси X, так и для оси Y. Я мог бы использовать пределы масштабирования и панорамирования ненадлежащим образом, но не могу понять, что и почему.

б) Как изменить поведение кнопки масштабирования?
Я хотел бы изменить поведение кнопки масштабирования 1:1. При нажатии этой кнопки отображается весь график, а не только последняя неделя.

Вот фрагмент кода для настройки свойств масштабирования:

    // ZOOM
    double[] panlimits = new double[] { XfirstRecord , maxdate, 0.0, Ymax * 1.2 };
    renderer.setZoomEnabled(enabledXzoom, YenabledYzoom);
    renderer.setZoomButtonsVisible(showZoomButtons);
    renderer.setZoomRate(ZoomRate);
    renderer.setPanLimits(panlimits);
    renderer.setZoomLimits(panlimits);

    renderer.setXAxisMin(OneWeekBefore);

Рабочее обновление после проверки ответа Дэна, как показано ниже, у меня это работает:

        // ZOOM
        double[] panlimits = new double[] { XfirstRecord, now, 0.0, Ymax * 1.2 };
        renderer.setZoomEnabled(XenabledZoom, YenabledZoom);
        renderer.setZoomButtonsVisible(showZoomButtons);
        renderer.setZoomRate(ZoomRate);
        renderer.setPanLimits(panlimits);
        renderer.setZoomLimits(panlimits);

        // SHOW ONLY last WEEK even after Zoom reset
        renderer.setXAxisMin(OneWeekBefore);
        renderer.setInitialRange(new double[] {OneWeekBefore, now, 0.0, Ymax * 1.2});

person hornetbzz    schedule 28.10.2012    source источник


Ответы (1)


Для первого вопроса пределы панорамирования и масштабирования должны быть примерно такими:

// please note that I am using the Java naming of variables
new double[] { oneWeekBefore, today, 0, yMax * 1.2 };

Пинч зум работает?

Для второго вопроса используйте:

renderer.setInitialRange(new double[] {oneWeekBefore, today, 0, yMax * 1.2});
person Dan D.    schedule 29.10.2012
comment
Спасибо, это помогло (см. обновленный вопрос). Масштабирование работало только для оси Y, но я думаю, из-за несоответствия точек в серии X. - person hornetbzz; 29.10.2012