При построении линейных диаграмм каждой величине соответствует точка, расположенная на определённой высоте относительно начала отсчёта (высота рассчитывается так же, как и при построении столбчатых диаграмм), все точки соединяются линиями. В результате получается ломаная. Такого рода диаграммы чаще всего строя в тех случаях, когда необходимо визуализировать динамику изменения величин.
Программа аналогична программе построения столбчатых диаграмм и приведена ниже.
program Stol_D;
Uses Graph;
Var a, xmax : Real; I, n : Byte; G, M : Integer;
F : Text; {файл содержит данные для построения диаграммы}
Stroka : String; Yn, Yk : Integer;
Xlv, Ylv, Xpn, Ypn : Integer;
{координаты окна вывода диаграммы}
Begin
Assign(F, '1.dat'); Reset(F);
if not eof(f) then begin readln(f, xmax); n:=1
end else n := 0;
While Not Eof(F) Do
begin Readln(F, a); if a > xmax then xmax :=a;
n := n + 1 end;
reset(f); G := detect; M := 0;
initgraph(G, M, ''); Xlv := 50; Ylv := 50; Xpn:= GetMaxX-100; Ypn:= GetMaxY-50;
line(xlv, ylv, xlv, ypn); line(xlv, ypn, xpn, ypn);
i:= 0; {номер точки}
readln(f, a);
Yn := round(Ypn-(Ypn-Ylv)/xmax*a);
str(a:5:1, stroka);
outtextxy(round(Xlv+i*(Xpn-Xlv)/n)-20, Ypn+20, stroka);
While Not Eof(f) Do
begin
setcolor(i mod 16+1);setfillstyle(1, i mod 16+1);
{укажем, какому цвету какая величина соответствует}
Readln(F, a);
Yk := round(Ypn-(Ypn-Ylv)/xmax*a);
{очередная линия}
line(round(Xlv+i*(Xpn-Xlv)/n), Yn,
round(Xlv+(i+1)*(Xpn-Xlv)/n), Yk);
i:= i + 1;
str(a:5:1, stroka);
outtextxy(round(Xlv+i*(Xpn-Xlv)/n)-20,Ypn+20,stroka);
Yn := Yk;
{запоминаем положение очередной точки}
end;
readln; close(F); closegraph
End.