§ 15. Пабудова графікаў функцый і дыяграм

15.3. Выкарыстанне кампанента Chart (Дыяграма) для пабудовы графікаў функцый і дыяграм

З дапамогай кампанента 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.

Этапы выканання задання

  1. Змясціць на форму кампаненты: дыяграма (Chart) і кнопка (Button).
  2. Змяніць уласцівасці Caption у кампанента Button1 на «Построить».
  3. Выбраць тып дыяграмы —гістаграма (Bar).
  4. Наладзіць наступныя ўласцівасці:
    4.1. Змяніць подпіс: Title — замяніць тэкст TChart на Гістаграма.
    4.2. Змяніць становішча легенды: Legend → Position — замяніць Right на Bottom.
  5. Падключыць бібліятэкі для працы з файламі і радкамі.
  6. Выкарыстоўваць той жа файл, які быў створаны для прыкладу 15.3.
  7. Напісаць апрацоўшчык падзеі OnClick для кампанента Button1.
    7.1. Ачысціць серыю ад выпадковых даных.
    7.2. У цыкле счытваць даныя з файла і дадаваць іх да даных серыі.

Прыклад 15.10. Стварыць праект, у якім неабходна пабудаваць графікі функцый y = x cosx  і   у адной сістэме каардынат. Для пабудовы дыяграмы варта выкарыстоўваць кампанент Chart.

Этапы выканання задання

  1. Змясціць на форму кампаненты: дыяграма (Chart), два кампанента LabeledEdit і кампанент Button.
  2. Змяніць уласцівасці Caption у кампанентаў LabeledEdit1, LabeledEdit2 на x0 і xn адпаведна.
  3. Змяніць уласцівасці Text у кампанентаў LabeledEdit1 і LabeledEdit2 на -30 і 30 адпаведна.
  4. Змяніць уласцівасці Caption у кампанента Button1 на «Построить».
  5. Дадаць дзве серыі, для якіх выбраць тып дыяграмы — кропкавая (Point), убраць галачку 3D.
  6. Змяніць назву серый: кнопка Title — замяніць Series1 на y=x*x+xcosx і Series2 на y=(x(x^2+5)^(1/2) / (x-3)
  7. Наладзіць наступныя ўласцівасці:
    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.
  8. Напісаць апрацоўшчык падзеі OnClick для кампанента Button1.
    8.1. Ачысціць серыі ад выпадковых даных.
    8.2. У цыкле з крокам 0.001 вылічаць значэнні функцый і дадаваць даныя ў адпаведнай серыі.
    8.3. Для другой серыі дадаць праверку на роўнасць назоўніка нулю. Калі назоўнік па модулю менш 0.01, то варта прапускаць ітэрацыю цыкла.

*Прыклад 15.11. Стварыць праект, у якім неабходна пабудаваць астроіду, зададзеную параметрычнымі ўраўненнямі:

 .

Для пабудовы дыяграмы выкарыстоўваць кампанент Chart.

Этапы выканання задання

  1. Змясціць на форму кампаненты: дыяграма (Chart), кампанент LabeledEdit і кампанент Button.
  2. Змяніць уласцівасці Caption у кампанента LabeledEdit1 на а.
  3. Змяніць уласцівасці Text у кампанента LabeledEdit1 на 5.
  4. Змяніць уласцівасці Caption у кампанента Button1 на «Построить».
  5. Дадаць серыю, для якой выбраць тып дыяграмы —  точечная (Point).
  6. Наладзіць наступныя ўласцівасці:
    6.1. Змяніць подпіс: Title — замяніць тэкст TChart на «Астроида».
    6.2. Выдаліць легенду: Legend → Style — убраць галачку Visible.
    6.3. Становішча восей і памер пункта ўстанавіць гэтак жа, як і ў прыкладзе 15.10.
  7. Напісаць апрацоўшчык падзеі 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);

  }

} 

Дадатак у час працы:

пример