40 правок за 2 часа — это сильно, не стоит так делать, есть кнопка «просмотр», это реально очень круто, рекомендую.

Заметку убирать не надо — разбавка копипасты не решила остальные проблемы.

Грамматические и синтаксические ошибки, неправильное использование заголовков (1, 2).

Испарвленно: стилистические и грамматические ошибки, заголовки. Добавлены разделы : Примеры графиков , Формат описания данных , Механизмы передачи входных данных , Механизмы вывода данных , Возможности применения , Пакет ChartLive

ChartLib

ChartLib — графическая библиотека для иллюстрации аналитических данных в деловой документации и научных работах. Может осуществлять построение графиков в Internet, полезна при оформлении публикаций и отчетов. Интегрируема с Delphi и C#, переносима под UNIX.

ChartLib строит графики по данным с любым происхождением: от биржевой аналитики и голосований до серверной статистики. При этом получаемые изображения (в формате PNG, JPEG или GIF) могут генерироваться с большой частотой (естественно, частота зависит от сложности изображения).

ChartLib находит свое применение везде, где нужна наглядность. Например, на сайте Московской межбанковской валютной биржи (ММВБ) встраиваются графики подготовленные коммерческой версией библиотеки. Главная страница http://www.micex.com

Примеры графиков

Некоторые типы графиков, которые можно построить с помощью ChartLib:

  • (обыкновенные) двумерные графики, при этом точки, линии и многоугольники можно отображать в различном виде

Пример форм и цветов точек

  • многодневные графики, графики, имеющие разрывы горизонтальной оси

Пример графика с разрывной осью абсцисс

  • гистограммы (вертикальные, горизонтальные); составные графики (состоящие из нескольких)

Пример составного графика и гистограмм

  • биржевые свечные графики

Пример биржевого свечного графика

  • сетевые и древовидные схемы

Пример древовидной схемы

  • Трёхмерные графики, содержащие точки, траектории, ленты и фигуры

Пример трехмерного графика

  • Трёхмерные поверхности

Пример поверхностей

Такое разнообразие достигается благодаря тому, что ChartLib не определяет типы графиков. Все графики формируются из уже готового набора объектов «низкого уровня»: точки, свечи, линии, боксы, используя различные отображения, которые помогают придать иллюстрации необходимый вид. Стоит отметить так же большой выбор цветов, рамок, заливок, форм объектов и т.д.

Формат описания данных

ChartLib использует специально разработанный формат входных данных CHD (CHart Description). По сути, это текстовые файлы, в которых записаны анализируемые данные и командные строки(поддерживается более 150 команд, более 50 свойств точек графика), несущие информацию о структуре и внешнем виде графика. В библиотеке имеется встроенный калькулятор арифметических выражений.

Механизмы передачи входных данных

Для передачи входных данных используются функции:

  • CL_DataFile – загружает данные из текстового файла формата CHD.
  • CL_DataLine – принимает поток текстовых строк.
  • CL_DataVector – принимает поток данных.
  • CL_DataMatrix – принимает интерфейс доступа к данным.

Механизмы вывода данных

Способы вывода и интерактивные возможности:

  • Вывод в окно прикладной программы
  • Вывод на печать
  • Сохранение графических изображений в файлы форматов BMP, EMF, PNG, JPEG, GIF
  • Импортирование графиков в документы офисных приложений через буфер обмена (передается график EMF-формата)

Следует отметить, что после вывода графика в окно ChartLib, с ним можно проделывать некоторые операции. Например, сдвиг, масштабирование, выделение, выбор подмножества точек. Так же реализована возможность просматривать информацию (комментарии) о точках, и формировать по ней отдельные таблицы. При этом, если на слайде отражено несколько графиков, то можно масштабировать оси синхронно. Несколько слайдов могут быть собраны в фильм (слайд-шоу).

Возможности применения

Широта использования библиотеки ChartLib обусловлена относительной простотой синтаксиса файлов входных данных формата CHD. Их можно формировать как с помощью офисных приложений (типа MS Excel), так и используя среды языков программирования высокого уровня (типа MatLab, C++ и др.)

Пакет ChartLive

ChartLive – пакет программ для создания, форматирования и интеграции графиков. Фундаментом для ChartLive является библиотека ChartLib. Единственной операционной системой, для которой приспособлен ChartLive, является MS Windows.
Пакет содержит следующие утилиты и компоненты:

  • chdView.exe – служит для просмотра CHD-файлов.
  • chdConv.exe – выполняет форматирование CHD-файлов в BMP, EMF, PNG, JPEG или GIF.
  • ttf2clf.exe – формирует растровые шрифты CLF-формата.
  • SliChart.pas – позволяет интегрировать графики в собственные приложения пользователя, разрабатываемые в среде DELPHI.
  • SliChart.csh – позволяет интегрировать графики в собственные приложения пользователя, разрабатываемые в среде Microsoft Visual Studio(на языке C#).
  • Документация пакета.
  • Примеры CHD-файлов.

Демо-версия

Существует бесплатная демо-версия ChartLive. Она содержит только программу chdView.exe, примеры файлов CHD и документацию пакета. Доступна для скачивания на сайте разработчиков ChartLib.

Синтаксис формата CHD

Библиотека ChartLib оперирует только с данными в виде строк формата CHD (CHart Description). Всего существует два вида строк: управляющие команды и данные. Управляющие команды начинаются с символа “#”. Комментарии начинаются с символа “##”. Если в конце строки стоит многоточие “…”, то она продолжается на следующей строке.

Объекты

Всего существует четыре уровня объектов:

  • фильмы
  • слайды
  • панели
  • области

Слайды
Слайд - это самый главный рабочий объект, который представляет собой изображение, полностью отображающееся в пользовательском окне или графическом файле.

Фильмы
Фильм - это последовательность слайдов. При создании слайда фильм создается автоматически и имеет имя 'default'. Это имя в дальнейшем можно изменить, чтобы иметь возможность обращаться к конкретному фильму. При использовании слайда пользователь имеет возможность переключаться на предыдущий, последующий, первый или последний слайды внутри одного фильма. Существует возможность просматривать слайды в автоматическом режиме, когда каждый слайд отображается пользователю последовательно с заданным интервалом времени.

Панели на слайдах
Слайд может содержать множество графиков, текстовые поля, метки и легенду. Панель представляет собой множество областей (заголовки, оси и их названия и т.д.). Каждая панель имеет свой идентификатор (имя), которое дается ей при создании. Если имя не задано, то панели присваивается имя 'default'. Созданная панель становится активной, и в нее направляется входной поток команд.

Области на панелях
Чтобы задать внешний вид каждой панели используются отдельные свойства областей, расположенные на этих панелях.

Синтаксис управляющих команд

Управляющие команды используются для установления отдельных свойств объектов на слайде, а также для переключения входного потока строк между матрицами данных, фильмами и слайдами.

Существует три вида управляющих команд:

# имя_объекта . имя_параметра = значение
# имя_параметра = значение
# имя_объекта = значение

В первой строке значение присваивается заданному параметру конкретного объекта. Во второй строке имя объекта опущено, и значение присваивается текущему объекту на слайде. Для всех графиков это объект Chart. В третьей строке имя параметра опущено, и значение присваивается основному свойству объекта. Каждый объект имеет свое основное свойство. Например, для заголовка графика основное свойство - Text.

Общие свойства, применимые ко всем объектам

Каждый объект (включая фильмы, слайды, панели и т.п.) имеет множество свойст, которые одинаковы для всех. Вот некоторые из них:

Visible = on - отображает объект;
Visible = off - скрывает объект.
Пример:

#XAxis.Visible off

Color = color
Задает основной цвет объекта. Параметр color - это натуральное число от 0 до 26, которое соответствует определенному цвету. В данном примере ось ординат будет иметь красный цвет.
Пример:

#YAxis.Color = 1

Background = color
Задает цвет фона объекта. Параметр color такой же, как и в предыдущем свойстве.
Пример:

#XAxis.Background = 25

Transparency = n
Задает прозрачность фона. Параметр n может принимать вещественные значения в диапазоне [0,1]. Ноль соответствует прозрачному фону, а единица - непрозрачному. По умолчанию установлена 1.

Аналогичным образом определяются остальные свойства для многих других объектов.

Свойства точек

Свойства точек задаются одним или двумя буквами, которые являются сокращениями английских слов. Например, W - это width, S - это shape, TI - это text inside и т.п. Ниже приведен полный список свойств.

  1. X - координата по оси X
  2. Y - координата по оси Y
  3. Z - координата по правой вертикальной оси
  4. S - форма точки
  5. W - размер точки
  6. C - первый (основной) цвет
  7. G - второй цвет
  8. I - интенсивность перехода от 1-го цвета ко 2-му
  9. O - цвет обводки точки
  10. U - флаги использования точки
  11. K - ключевой номер точки (для парных соединений)
  12. TX - текстовая метка по оси Х
  13. TY - текстовая метка по оси Y
  14. TI - текст внутри точки
  15. TN - текст рядом с точкой
  16. TR - текст, выводимый при активизации точки
  17. TB - текст, выводимый в статусную строку
  18. TT - текст, выводимый в таблицу выделенных точек
  19. TQ - текст, выдаваемый по запросу через API
  20. TE - выполняемая команда операционной среды
  21. TC - цвет текстов TN, TR и TI

Свойства линий

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

  1. LW - толщина линии
  2. LS - стиль линии
  3. LC - первый (основной) цвет линии
  4. LG - второй цвет линии
  5. LI - интенсивность перехода от 1-го ко 2-му
  6. LP - форма пути
  7. LD - направление: что с чем соединять
  8. LA - стрелка

Управление потоком данных

Для описания графика достаточно всего двух команд NewData и Series, за которыми должны следовать строки данных. Данные могут располагаться за другими командами, но обязательно до следующей команды NewData.
Команда NewData создает новую матрицу данных с заданными именами столбцов и делает ее текущей. Каждый столбец данных, который следует за командой NewData, сопоставляется с именем, указанным в этой команде. Столбцы должны разделяться табуляцией между собой. Создать новую матрицу данных с именем tableName, состоящую из N столбцов можно следующим образом:
NewData tableName = [type1] name1 , … , [typeN] nameN
Каждый столбец задается своим именем, перед которым через пробел может быть указан тип хранимых в столбце данных, а именно:
byte - целые,
real - вещественные,
text - текстовые.

С помощью команды Series можно создать серию точек на графике, и описывает ее свойства, такие как X-координата, Y-координата, цвет, форма точки, прозрачность точки и т.п. Чтобы задать на графике новую серию точек с именем serName и набором желаемых свойств property1, … , propertyN воспользуйтесь командой:
Series serName: property1=value1, … , propertyN=valueN
Например, следующая команда задает новую серию с именем line и конкретным набором свойств:

#Series line: X=time Y=age S=0 LP=2 LC=1 C=4

Также графики можно создавать аналитически. Для этого используется команда
Let [type] name = expr
Выражения expr могут содержать в качестве переменных имена столбцов матриц данных, определенных на текущем или любом другом слайде.
Пример использования команды Let:

#Let x = RowIndex/RowsCount * 10 - 5
#Let f1 = if(x < -2, 3*(-2 - x),  0.9*(x + 4))
#Let f2 = if(x < 2,  4*(3 - x), 6*(x - 4))

Переменные

В библиотеке ChartLib уже заданы предопределенные переменные, которые используются в различных контекстах. Они допустимы в команде Let.
Например:
RowIndex - это номер строки в матрице.
RowsCount - число строк в матрице.

Форматы вывода чисел

Форматы вывода чисел задаются по правилам функции printf языка С.

Функции

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

Пример программы

Следующий пример позволяет нарисовать 4 класса объектов, ограниченных линиями. Объекты одного класса имеют одинаковый цвет и форму.

#NewData first, second
0.3	1
0.5	0.9
0.25	1.25
0.7	0.8
0.5	0.6
#Series tests1  X = first, Y = second, S = 10, C = 11, LP = 0
#NewData f, s
2.1	2.61
2.2	2.9
2.15	2.93
2.02	2.8
2.1	3
#Series tests  X = f, Y = s, S = 3, C = 2, LP = 0
#NewData f11, s11
0.9	3.8
0.7	3.7
1	3.45
0.75	3.88
0.6	3.4
#Series tests11  X = f11, Y = s11, S = 2, C = 10, LP = 0
#NewData fir, sec
1.9	1
1.8	1.2
1.75	1.25
1.7	0.8
1.85	0.6
#Series tests2  X = fir, Y = sec, S = 4, C = 1, LP = 0

##Каждый из 4-х блоков отвечает за создание отдельного класса.
##Сначала задаются координаты точек, потом создаётся новая серия на основе этих данных, объектам задаётся форма и цвет.

#Let x= RowIndex/RowsCount * 10 - 5
#Let f1 = 5*x-4
#Let f2 = 1.8
#Series X=x Y=f1 W=0 LC=22
#Series X=x Y=f2 W=0 LC=23
#ResizeData 401

##Этот блок кода отвечает за рисование линий, которые ограничивают классы между собой.

Ссылки

Печать/экспорт