Рисование графика с помощью canvas (jquery)

Hixon10
На сайте с 21.08.2010
Offline
125
3139

Добрый вечер.

Мне нужно отрисовывать на стороне клиента график, который будет удовлетворять следующим требованиям:

1) Должен быть реализован зум.

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

3) Библиотека должна брать на себя масштабирование по оси ординат.

4) Самое главное - график должен быть разноцветным: один участок - одним цветом, другой - другим и так далее.

Все, кроме 4-ого пункта, вроде бы реализовано в flot. Я, за неимением опыта построения графиков, взял эту библиотеку и пошёл её допиливать. Смог сделать все без 4-ого пункта.

Собственно вопрос: как рисовать разноцветные линии в canvas?

Небольшое пояснением кодом:

1) Идёт создание объекта:

canvas = $('<canvas width="' + canvasWidth + '" height="' + canvasHeight + '"></canvas>').appendTo(target).get(0);
if ($.browser.msie) // excanvas hack
canvas = window.G_vmlCanvasManager.initElement(canvas);
ctx = canvas.getContext("2d");

2) Задаем цвет линий:

ctx.strokeStyle = "#000000";

3) Рисуем:

ctx.lineTo(drawx, drawy);

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

Полный код библиотеки.

Веду свой невзрачный блог (http://hixon.ru/).
Hixon10
На сайте с 21.08.2010
Offline
125
#1

До сих пор ищу решение своей проблемы.

SI
На сайте с 03.12.2007
Offline
130
#2
Hixon10:

4) Самое главное - график должен быть разноцветным: один участок - одним цветом, другой - другим и так далее.

Все, кроме 4-ого пункта, вроде бы реализовано в flot.

Цвет там тоже можно менять

http://people.iola.dk/olau/flot/examples/thresholding.html

-= Онлайн сервисы =-
Hixon10
На сайте с 21.08.2010
Offline
125
#3

Спасибо, пойду смотреть. Вроде бы изначально можно делать только двухцветный график? Наверное, придется взять принцип рисования этого графика и доделать до нужного количества цветов.

Ещё раз спасибо.

P.S. Все, работает. Ещё раз спасибо!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий