Лабораторная
работа № 6
на тему «Построение диаграмм и графиков функций» для ст-тов 1 курса ПИЭ факультета
ИиИТ
Цель работы: приобретение
практических навыков по построению
диаграмм и графиков функций.
Используемые программные средства: Borland Delphi.
Теоретические сведения. Работа
с компонентами
Компонент-диаграмма Chart типа TChart предназначен
для работы с графиками и диаграммами различных типов и служит для графического
представления результатов. Компонент находится на панели Additional Палитры компонентов и имеет пиктограмму .
Компонент содержит
большое количество разнообразных
свойств, многие из
которых являются объектами и имеют
свои свойства. Установка значений этих свойств выполняется с помощью редактора Editing Chart (рис. 6.1) во время разработки
программы (приложения) либо при обращении к свойствам компонента во время ее
выполнения. Всю работу по отображению графиков, построению и разметке
координатных осей, сетки, подписей и т.д. берет на себя компонент Chart. Разработчику программы требуется задать тип диаграммы и источник данных.
Для представления
данных, заданных таблично или с использованием функции, в виде линии,
используется переменная Series1 типа TLineSeries, которая описывает последовательность значений, отображающихся на диаграмме.
Добавление новой точки к серии выполняется с помощью
метода Add:
function AddXY(Const AXValue,AYValue:Double;
Const AXLabel:String; AColor:TColor),
где AXValue, AYValue – параметры, определяющие координаты точки по осям
OX и OY;
AXLabel – необязательный параметр;
AColor – цвет группы, к которой
принадлежит точка.
Рис. 6.1. Окно редактора Editing Chart
Аналогично для
добавления нового сектора в круговой диаграмме так же можно воспользоваться
функцией Add:
function Add(Const PieValue:Double;
Const APieLabel:String;
AColor: TColor)
где PieValue – величина
сектора данных , APieLabel – необязательный
параметр, AColor – цвет сектора.
Связь между диаграммой и программным кодом происходит
следующим образом. При создании каждой серии данных с помощью редактора Editing Chart, в разделе
TForm1 появляется
новая переменная Series<n> (где <n> – номер серии) соответствующего
типа. Например, для отображения серии данных в виде точек, переменная Series1 будет иметь тип TPointSeries (точечное
представление). Некоторые свойства компонента Chart приведены в табл. 6.1.
Таблица 6.1
Свойства компонента Chart
Title.Text |
задание
заголовка диаграммы |
Title.Aligment |
выравнивание заголовка |
<NameAxis>.Automatic |
автоматическое
определение параметров по оси |
<NameAxis>.Minimum |
задание
минимального значения по оси |
<NameAxis>.Maximum |
задание
максимального значения по оси |
<NameAxis>.Increment |
задание
шага разметки по оси |
Под <NameAxis> понимается
нижняя (BottomAxis), левая (LeftAxis),
правая (RightAxis) или верхняя (TopAxis) координатная ось.
6.2. Порядок выполнения работы
Изучить компонент TChart и его свойства, выполнить контрольные примеры и задания соответствующего варианта.
Контрольный пример 6.1
Составить программу, отображающую графики функций
и
в интервале [a, b] с заданным шагом h.
Решение.
1. Открыть новый проект Delphi: File – New Application.
2.
На форме
расположить следующие компоненты: три компонента Edit, три компонента Label, компонент Chart и компонент Button и установить для них следующие свойства:
Label1.Caption = a'
Label2.Caption = b' Label3.Caption = h' Edit1.Text = '' Edit2.Text = ''
Edit3.Text = ''
Button1.Caption = 'Построить'
Для изменения
параметров компонента Chart необходимо два раза щелкнуть на нем левой кнопкой
мыши (или один раз правой кнопкой и в контекстном меню выбрать пункт Edit Chart). В открывшемся окне редактирования Editing Chart1 создать два объекта Series1 и Series2, щелкнув
на кнопке Add,
находящейся на вкладке Series. В качестве типа графика выбрать Line, отключив трехмерное представление с помощью
переключателя 3D. Для изменения имен серий (на f1 и f2) используется
кнопка Title.
Редактирование завершается нажатием кнопки Close. Первоначально на графиках отображаются случайные
значения.
3. Для решения задачи запишем обработчик событий Button1.Click, щелкнув на компоненте Button1 (кнопка Построить) два
раза левой кнопкой мыши. Текст соответствующей процедуры имеет вид:
procedure
TForm1.Button1Click(Sender: TObject); var a,b,h:double;
var x,f1,f2:double; begin
//удаление всех значений в ряду данных
Series1.Clear;
Series2.Clear;
//задание
значений границ и шага a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text);
h:=StrToFloat(Edit3.Text);
//расчет значений функций
x:=a; repeat
f1:=sin(x);
Series1.AddXY(x,f1,'',clRed);
f2:=cos(x);
Series2.AddXY(x,f2,'',clBlue);
x:=x+h;
until x>b;
//задание
названия диаграммы Chart1.Title.Text.Clear; Chart1.Title.Text.Add('Графики
функций f1 и f2.
Шаг = '+FloatToStr(h));
//установка
параметров нижней оси Chart1.BottomAxis.Automatic:=false;
Chart1.BottomAxis.Minimum:=a; Chart1.BottomAxis.Maximum:=b;
Chart1.BottomAxis.Increment:=(Chart1.BottomAxis.Maximum
-Chart1.BottomAxis.Minimum)/2;
//установка
параметров левой оси Chart1.LeftAxis.Automatic:=false;
Chart1.LeftAxis.Minimum:=-1; Chart1.LeftAxis.Maximum:=1; Chart1.LeftAxis.Increment:=0.5;
end;
4.
Запустить проект на
компиляцию и выполнение.
5.
Задать
значения a = 0, b = 6.28, h = 0.1 и
нажать кнопку Построить. График зависимостей будет иметь вид,
показанный на рис. 6.2.
Рис. 6.2. Результат выполнения программы для контрольного примера 6.1
Контрольный пример 6.2
Построить график функции, заданной таблично. Для ввода значений
использовать компонент StringGrid.
Решение.
1. Открыть новый проект Delphi: File – New Application.
2.
На форме
расположить следующие компоненты: компонент Edit, компонент Label, компонент Chart, компонент CheckBox, компонент StringGrid и два компонента Button.
3. Установить в Object Inspector следующие свойства компонентов:
Label1.Caption
= 'N'
Button1.Caption = 'Таблица'
Button2.Caption = 'Построить'
Edit1.Text =
''
StringGrid1.Options
goEditing = true
StringGrid1.ColCount = 2
StringGrid1.FixedCols
= 0
CheckBox1.Caption
= 'Точки'
Для компонента Chart, используя EditingChart1,
создать объект
Series1,
выбрав в качестве типа графика Line.
4.
Запишем обработчики
событий Button1.Click (кнопка Таблица) и
Button2.Click (кнопка Построить), текст которых приведен ниже:
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.RowCount:=StrToInt(Edit1.Text)+1;
StringGrid1.Cells[0,0]:='x';
StringGrid1.Cells[1,0]:='y';
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,j:longint;
begin
Series1.Clear;
for i:=1 to
StringGrid1.RowCount-1 do
Series1.AddXY(StrToFloat(StringGrid1.Cells[0,i]),
StrToFloat(StringGrid1.Cells[1,i]),
'',clGreen);
Chart1.Title.Text.Clear;
end;
5. Для отображения точек на графике использовался
метод Visible компонента
типа TSeriesPointer, входящего в состав компонента Chart. Обработчик
соответствующего события имеет вид:
procedure TForm1.CheckBox1Click(Sender:
TObject); begin
if CheckBox1.Checked=true
then Series1.Pointer.Visible:=true else Series1.Pointer.Visible:=false;
end;
6. Запустить проект на компиляцию и выполнение.
7. Задать значение для N = 6 и заполнить таблицу следующими значениями:
x |
0 |
3 |
4 |
7 |
10 |
12 |
y |
0 |
14 |
-4 |
10 |
12 |
7 |
8. После нажатия на кнопку Построить отобразится
графическая зависимость исходных данных. При изменении состояния переключателя Точки график имеет вид
"линия с точкой" как показано на рис. 6.3.
Рис. 6.3. Результат выполнения программы для контрольного примера 6.2
Контрольный пример 6.3
Построить круговую
диаграмму реализации следующей продукции: гречка - 20%, пшено - 35%, рис - 45%. Использовать
компонент типа T PieSeries (круговая диаграмма).
Решение.
1. Открыть новый проект Delphi: File – New Application .
2.
На форме
расположить следующие компоненты: три компонента Edit, три компонента Label, компонент Chart, компонент Button. В качестве типа графика выбрать Pie.
Для решения задачи
запишем обработчик событий Button1.Click, щелкнув на компоненте Button1 (кнопка Построить) два раза левой кнопкой мыши. Текст соответствующей процедуры имеет вид:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:real;
begin a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text); c:=strtofloat(edit3.Text);
With Series1 do // with – оператор
присоединения (with
<переменная> do <оператор>)
Begin
Clear ;
AddPie( a, ‘гречка’ ,
clRed ) ; AddPie( b, 'пшено', clyellow ) ;
AddPie( c, 'рис', clGreen ) ;
end;
Контрольный пример 6.4
Построить график функции вводятся с клавиатуры.
Решение.
r = sin kj
в полярной системе
координат k
и j
1. Открыть новый проект Delphi: File – New
Application .
2.
На форме
расположить следующие компоненты:
четыре компонента Edit,
четыре компонента Label,
(график рисуется на
форме, перерисовывается при
изменении параметра n в Edit1 (рис. 6.4)).
procedure TForm1.FormPaint(Sender: TObject); const
XScale = 200; // масштаб по горизонтали XShift
= XScale; // сдвиг
по горизонтали YScale
= 200; // масштаб по вертикали
YShift = YScale; //
сдвиг по вертикали
ER = 2; //
радиус круга
var
n,
i, X, Y: Integer;
r, fi, fi_0, fi_n, h, k:
Real; begin
try
n :=
StrToInt(Edit1.Text); k := StrToFloat(Edit4.Text);
fi_0 :=
StrToFloat(Edit2.Text); fi_n := StrToFloat(Edit3.Text);
h := Abs(fi_n - fi_0) / n; // шаг аргумента
with Canvas do begin
Pen.Color := clNavy; //
цвет карандаша
Brush. Color
:= clLime; // цвет заливки
end;
for i := 0 to n do begin
fi := fi_0 + i * h; // расчет
текущего значения аргументаr := Sin(k * fi); // расчет
текущего значения функции
X := Round(XScale * r * Cos(fi) + XShift);
//преобразование
Y
:= Round(YScale * r * Sin(fi) + YShift);
//координат
Canvas.Ellipse(X - ER, Y - ER, X + ER, Y + ER);
//рисуем эллипс (в нашем
случае круг) end;
except
on
e: EConvertError do
MessageDlg('Нужно вводить числа', mtError, [mbOK], 0);
// обработка ошибки ввода числа
else
raise;
end; end;
При изменении пользователем параметра n в компоненте Edit1
перерисовывается.
procedure TForm1.Edit1Change(Sender:
TObject);
begin
Invalidate; //
перерисовка формы
end;
procedure TForm1.Edit4Change(Sender: TObject); begin
Caption := Format('График функции r=Sin( kj
)',
[Edit4.Text]);
Edit1Change(Self);
end;
Рис. 6.4. Результат выполнения программы для контрольного примера 6.3
1. С какой целью применяется компонент Chart?
2.
Можно ли в Object Inspector устанавливать свойства отображения осей?
3. Можно ли на форме располагать два компонента Chart? Если нет то почему?
4.
Разрешается ли во
выполнении программы изменять тип диаграммы?
5.
Какие
параметры задаются на панели Legend в Editing Chart и какие
параметры графика можно редактировать с помощью нее?
Вариант 1
Задание 1. Построить на одном графике функции f1 = ex и f2 = lnx f2 = ln(x)
на интервале [0,1;1]. Шаг h = 0.01.
Задание 2. В
полярной системе координат
построить график спирали
Архимеда
Вариант 2
Задание 1. Построить на
одном графике функции f1 = x3 и f2 = |x| на интервале
[-10, 10].
Задание
2. В полярной системе координат
построить график улитки Паскаля
r = 2a cosj .
Вариант 3
Задание 1. Построить на
одном графике три функции: f1 = x, f2 = x2, f3 = x3
на интервале [-20, 20] .
Задание 2. В полярной системе
координат построить график спирали
Галилея
Вариант 4
Задание 1. Построить на одном графике две функции, заданные
таблично.
Значения функций задаются с помощью компонента StringGrid.
Задание 2. В
полярной системе координат
построить график строфоиды
для a = 1.
Вариант 5
Задание 1. Построить график функции y = ax2 + bx + c. Значения параметров
a, b, с задаются с клавиатуры (использовать
компонент Edit).
Задание 2. В полярной системе
координат построить график
кардиоиды
r = 2a(1- cosj ) для a = 3
Вариант 6
Задание 1. Построить зависимость . Предусмотреть
возможность задания параметров
I 0 и a. Результат представить в графическом виде (компонент Chart) и табличном (компонент
StringGrid).
Задание 2. В
полярной системе координат построить график логарифмической спирали для a = 2.
Вариант 7
Задание 1. Построить круговую диаграмму реализации следующей
продукции: кофе – 20%, чай – 35%, напитки – 45%. Использовать компонент типа TPieSeries (круговая диаграмма).
Задание
2. В полярной системе координат
построить график спирали «жезл»
для a = 4 .
Вариант 8
Задание
1. Построить графики реализации
книг в двух книжных магазинах по месяцам. Использовать компонент типа TPieSeries (круговая диаграмма).
Задание 2. В полярной системе координат построить график
гиперболической спирали