С помощью компонента Chart (Диаграмма) можно строить красивые двух- и трехмерные диаграммы на основе различных данных. Компонент Chart находится на палитре TeeChart STD и изображен в виде . Компонент Chart, помещенный на форму, получает имя ChartN, где N — номер 1, 2, 3… (пример 15.5)
Настройка диаграммы выполняется с помощью редактора, который вызывается двойным щелчком по компоненту (пример 15.6). Параметры отображения диаграммы в окне определяются в разделе Chart, состоящей в свою очередь из набора дополнительных подразделов (General, Axis, Title, Legend, Panal, Walls, 3D). Подробнее о настройке подразделов можно почитать в приложении.
Компонент Chart является контейнером объектов Series — серий данных, которые могут быть визуализированы с помощью различных графических представлений. Свойства серий устанавливаются с помощью редактора диаграмм или непосредственно в программном коде. Для добавления серии используется кнопка Add. Затем происходит выбор внешнего вида диаграммы (пример 15.7) и настройка параметров ее отображения. При добавлении серия получает имя SeriesN, где N — номер 1, 2, 3…
Все серии добавляются на диаграмму со случайными данными, поэтому при программной обработке серию необходимо очистить командой: Series1 -> Clear();
Для добавления данных в серию используется метод Add. Если данные должны отображаться в декартовой системе координат, то используют метод AddXY (пример 15.8).
При использовании компонента Chart масштабирование выполняется автоматически.
Пример 15.9. Создать проект, в котором необходимо построить гистограмму по данным из файла. Для построения диаграммы следует использовать компонент Chart.
Этапы выполнения задания
- Поместить на форму компоненты: диаграмма (Chart) и кнопка (Button).
- Изменить свойства Caption у компонента Button1 на «Построить».
- Выбрать тип диаграммы — гистограмма (Bar).
- Настроить следующие свойства:
4.1. Изменить подпись: Title — заменить текст TChart на Гистограмма. 4.2. Изменить положение легенды: Legend → Position — заменить Right на Bottom.
- Подключить библиотеки для работы с файлами и строками.
- Использовать тот же файл, который был создан для примера 15.3.
- Написать обработчик события OnClick для компонента Button1.
7.1. Очистить серию от случайных данных. 7.2. В цикле считывать данные из файла и добавлять их к данным серии.
Пример 15.10. Создать проект, в котором необходимо построить графики функций y = x cosx и в одной системе координат. Для построения диаграммы следует использовать компонент Chart.
Этапы выполнения задания
- Поместить на форму компоненты: диаграмма (Chart), два компонента LabeledEdit и компонент Button.
- Изменить свойства Caption у компонентов LabeledEdit1, LabeledEdit2 на x0 и xn соответственно.
- Изменить свойства Text у компонентов LabeledEdit1 и LabeledEdit2 на -30 и 30 соответственно.
- Изменить свойства Caption у компонента Button1 на «Построить».
- Добавить две серии, для которых выбрать тип диаграммы — точечная (Point), убрать галочку 3D.
- Изменить название серий: кнопка Title — заменить Series1 на y=x*x+xcosx и Series2 на y=(x(x^2+5)^(1/2) / (x-3)
- Настроить следующие свойства:
7.1. Свойсво Title — удалить текст TChart. 7.2. Изменить положение легенды: Legend → Position — заменить Right на Bottom. 7.3. Изменить положение осей: Axis → Left значение Axis → Position — установить 50%; аналогично для Axis → Bottom изменить значение Axis → Position на 50%. 7.4. Для каждой серии: 7.4.1. изменить размер точки: Size — 1; 7.4.2. удалить границу вокруг точки: Border — убрать галочку Visible.
- Написать обработчик события OnClick для компонента Button1.
8.1. Очистить серии от случайных данных. 8.2. В цикле с шагом 0.001вычислять значения функций и добавлять данные к соответствующей серии. 8.3. Для второй серии добавить проверку на равенство знаменателя нулю. Если знаменатель по модулю меньше 0.01, то следует пропускать итерацию цикла.
*Пример 15.11. Создать проект, в котором необходимо построить астроиду, заданную параметрическими уравнениями:
.
Для построения диаграммы использовать компонент Chart.
Этапы выполнения задания
- Поместить на форму компоненты: диаграмма (Chart), компонент LabeledEdit и компонент Button.
- Изменить свойства Caption у компонента LabeledEdit1 на а.
- Изменить свойства Text у компонента LabeledEdit1 на 5.
- Изменить свойства Caption у компонента Button1 на «Построить».
- Добавить серию, для которой выбрать тип диаграммы — точечная (Point).
- Настроить следующие свойства:
6.1. Изменить подпись: Title — заменить текст TChart на Астроида. 6.2. Удалить легенду: Legend → Style — убрать галочку Visible. 6.3. Положение осей и размер точки установить так же, как и в примере 15.10.
- Написать обработчик события OnClick для компонента Button1.
7.1. Очистить серии от случайных данных. 7.2. В цикле изменять параметр t от 0 до 2p[1] с шагом 0.001. 7.3. Вычислять значения x и y и добавлять данные к серии.
|
Пример 15.5. Компонент Chart на форме:
Пример 15.6. Редактор диаграммы:
Пример 15.7. Выбор типа диаграммы:
Пример 15.8. Методы добавления данных в серию:
Series1->Add(z, s, color);
Параметры:
z — число, соответствующее значению данных;
s — подпись данных;
color — цвет.
Series1-> AddXY(x,y,"",color);
Параметры:
x, y — координаты отображаемой точки в декартовой системе координат;
"" — здесь может быть текст подписи к точке;
color — цвет.
Параметр color может быть опущен. В этом случае цвет элемента диаграммы определяется настройками редактора.
Пример 15.9. Форма на этапе конструирования:
Обработчик события OnClick для кнопки.
void __fastcall TForm1::Button1Click (TObject *Sender)
{
ifstream fin("date.txt");
int n;
fin >> n;
Series1 -> Clear();
for(int i = 0; i < n; i++) {
string s;
int d;
fin >> s >> d;
Series1 -> Add(d, s.c_str());
}
}
|
Работающее приложение:
Пример 15.10. Форма на этапе конструирования:
Изменение названия серии:
Обработчик события OnClick для кнопки
void __fastcall TForm1::Button1Click TObject *Sender)
{
double x0 = StrToFloat
(LabeledEdit1 -> Text);
double xn = StrToFloat
(LabeledEdit2 -> Text);
Series1 -> Clear();
Series2 -> Clear();
for (double x = x0; x <= xn; x += 0.001) {
double y = x * x + x * cos(x);
Series1 -> AddXY(x, y, "", clBlue);
if ( abs(x - 3) < 0.01 ) continue;
double y1 = x * sqrt(x * x + 5) / (x - 3);
Series2 -> AddXY(x, y1, "", clRed);
}
}
|
Работающее приложение:
Пример 15.11. Форма на этапе конструирования:
Обработчик события OnClick для кнопки.
void __fastcall TForm1::Button1Click (TObject *Sender)
{
double a = StrToFloat
(LabeledEdit1 -> Text);
Series1 -> Clear();
for (double t = 0;
t <= 2 * acos(-1.);
t += 0.001) {
double x = a * cos(t) * cos(t) * cos(t);
double y = a * sin(t) * sin(t) * sin(t);
Series1 -> AddXY(x, y, "", clRed);
}
}
|
Работающее приложение:
|