Страница 1 из 2

Chart: автоматическое создание Series

Добавлено: 11 май 2017, 10:45
Michael
Здравствуйте.

Хочу создать график следующего вида: ось x - время, ось y - значение. В случае одного графика все получается без проблем на основе таблицы со столбцами:
1. DateTimeStamp - дата и время.
2. Value - значение.

Особенность в том, что на одном Chart мне нужно размещать несколько таких графиков - как правило, от 1 до 5. В этом случае в таблицу с данными добавляется столбец с кодом датчика:
1. DateTimeStamp - дата и время.
2. SensorID - код датчика.
3. Value - значение.

Надо, чтобы для каждого датчика (SensorID) строился свой график, при этом в легенде было бы написано его название, а цвет линии также брался бы из базы. Для названий и цветов можно сделать отдельную таблицу, а можно добавить столбцы в основную.

Вопрос в следующем. Есть ли такой встроенный функционал в Chart, или надо создавать Series на лету кодом? И если второе, то можно ли это делать в самом отчете?

Re: Chart: автоматическое создание Series

Добавлено: 12 май 2017, 15:57
Aleksey
Здравствуйте,

В данном случае, вы можете использовать AutoSeriesKey DataColumn, AutoSeriesColor DataColumn свойства.

Спасибо.

Re: Chart: автоматическое создание Series

Добавлено: 12 май 2017, 17:45
Michael
Спасибо за ответ.

Уточните, столбцы для подстановки в указанные поля должны быть в той же таблице, что и данные, или в отдельной?
В каком формате должен быть указан цвет? Можно ли не указывать цвет (чтобы он генерился автоматически, это для проверки)?

Пробовал разные варианты, но при заполнении этих AutoSeries полей стабильно выдается ошибка компиляции отчета.

Re: Chart: автоматическое создание Series

Добавлено: 12 май 2017, 17:57
Michael
Более-менее разобрался, цвет можно не указывать, тогда он генерится случайным образом. Все поля должны браться из одной таблицы.

Остался вопрос - в каком формате должен быть указан цвет?

Re: Chart: автоматическое создание Series

Добавлено: 16 май 2017, 09:09
HighAley
Здравствуйте.

Цвет можете указывать либо по имени, либо в RGB формате.

Спасибо.

Re: Chart: автоматическое создание Series

Добавлено: 16 май 2017, 09:34
Michael
Цвет можете указывать либо по имени, либо в RGB формате.
Спасибо за ответ, но я уже перекопал форум и нашел правильные варианты заполнения столбца с цветом (viewtopic.php?f=8&t=235):

Код: Выделить всё

Series1; 0xff0000 
Series2; 0x00ff00 
Series3; Color.White 
Может кому пригодится.

Но главная проблема, с которой я столкнулся при построении своих графиков - невозможность в вашем Chart размещения точек графика с произвольным шагом. Подробно это описано здесь: viewtopic.php?f=8&t=3729. Мои данные пишутся в базу неравномерно (по дате/времени), и привязать их к сетке невозможно. Пробовал включать интерполяцию, пробовал выключать Show Nulls - это все не то. Я так понимаю, единственный выход - нарисовать свой график в каком-то отдельном компоненте, отрендерить и вставить в отчет как картинку.

Re: Chart: автоматическое создание Series

Добавлено: 17 май 2017, 14:15
HighAley
Здравствуйте.

Наш продукт работает по тем же принципам, что и Excel.
В обычной серии данные показываются последовательно без масштабирования по оси Х.
В вашем случае стоит использовать Scatter серию.

Спасибо.

Re: Chart: автоматическое создание Series

Добавлено: 17 май 2017, 18:51
Michael
Scatter - это то, что нужно, спасибо! Получился отличный график.

Еще вопрос - можно ли как-то, помимо цвета, задавать в автосериях другие параметры линии, например, толщину или стиль? Просто попадаются похожие цвета и не очень понятно, к какой именно серии они относятся. Толщина линии, стиль или маркеры хорошо помогли бы различать линии. Может быть, в отчете можно запускать какой-нибудь обработчик, который уже после генерации серий мог бы их модифицировать?

Re: Chart: автоматическое создание Series

Добавлено: 18 май 2017, 14:35
Kubekin Yuriy
Здравствуйте, Michael.

К сожалению, такого функционала не существует.

Спасибо.

Re: Chart: автоматическое создание Series

Добавлено: 18 май 2017, 14:42
Michael
Юрий, день добрый.

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