Topic: тестируем график...

Всем хорошего настроения!!!
Дмитрий...в новой версии 2.6 есть пример график...
Вопрос:
1.) У вас берутся данные из таблицы, есть способ использовать даные из грида???
2.) Суть вопроса изложена в рисунку, который прикреплён ниже...

Post's attachments

Attachment icon Скриншот 22-05-2016 021745.png 40.99 kb, 319 downloads since 2016-05-22 

Re: тестируем график...

Приложите пожалуйста данный проект к сообщению, постараюсь реализовать это.

Dmitry.

Re: тестируем график...

Приложите пожалуйста данный проект к сообщению, постараюсь реализовать это.

Post's attachments

Attachment icon Chart on Form.zip 13.75 kb, 882 downloads since 2016-05-23 

Re: тестируем график...

RZ-007 wrote:

Приложите пожалуйста данный проект к сообщению, постараюсь реализовать это.

{== LINE CHART ===========================================================================================}
procedure Form1_bLineUpdate_OnClick (Sender: string; var Cancel: boolean);
var
    Results: TDataSet;
    DateValue: Double;
    ProfitValue: string;
    i,c: integer;
begin
    ChartLine.Series[0].Clear;

    c := Form1.GridLine.RowCount-1;
    for i := 0 to c do
    begin
        if ValidDate(Form1.GridLine.Cells[0, i]) then DateValue := StrToDate(Form1.GridLine.Cells[0, i]);
        ProfitValue := Form1.GridLine.Cells[1, i];

        if ValidFloat(ProfitValue) then ChartLine.Series[0].AddXY(DateValue, StrToFloat(ProfitValue) );
    end;


end;
{== LINE CHART ===========================================================================================}
Dmitry.

5 (edited by RZ-007 2016-05-25 00:16:12)

Re: тестируем график...

Дмитрий это просто чудесно!!!
данные из грида для графика работают...ОК!!!
ПОСТ №1

2.) Суть вопроса изложена в рисунку, который прикреплён ниже

Post's attachments

Attachment icon Скриншот 22-05-2016 021745.png 43.63 kb, 301 downloads since 2016-05-25 

Re: тестируем график...

RZ-007 wrote:

Дмитрий это просто чудесно!!!
данные из грида для графика работают...ОК!!!
ПОСТ №1

2.) Суть вопроса изложена в рисунку, который прикреплён ниже

Пожалуйста опишите словами, что именно необходимо.

Dmitry.

Re: тестируем график...

Всем хорошего настроения!!!

Пожалуйста опишите словами, что именно необходимо.

не принципиально но....
1.) линии чертились не просто сглажено, а через точки...
2.) если значение больше нулевого значения...точка(маленький кругляшок) зелёным цветом,
если меньше красным....

Post's attachments

Attachment icon Скриншот 22-05-2016 021745.png 43.63 kb, 296 downloads since 2016-05-25 

Re: тестируем график...

RZ-007 wrote:

Всем хорошего настроения!!!

Пожалуйста опишите словами, что именно необходимо.

не принципиально но....
1.) линии чертились не просто сглажено, а через точки...
2.) если значение больше нулевого значения...точка(маленький кругляшок) зелёным цветом,
если меньше красным....

В событии OnShow где создается график, добавьте эти строки

  ChartLine.View3D := False;
  TLineSeries(ChartLine.Series[0]).Pointer.Visible := True;
  TLineSeries(ChartLine.Series[0]).Pointer.Style  := psCircle;
  TLineSeries(ChartLine.Series[0]).Pointer.Size   := 10;


пример процедуры заполнения графика, правда линии тоже будут окрашены

{== LINE CHART ===========================================================================================}
procedure Form1_bLineUpdate_OnClick (Sender: string; var Cancel: boolean);
var
    Results: TDataSet;
    DateValue: Double;
    ProfitValue: string;
    col: TColor;
begin
    ChartLine.Series[0].Clear;

    SQLQuery('SELECT date, profit FROM line_data ORDER BY date DESC', Results);

    while not Results.Eof do
    begin
        DateValue := SQLDateTimeToDateTime( Results.FieldByName('date').asString );
        ProfitValue := Results.FieldByName('profit').asString;

        if ValidFloat(ProfitValue) then
        begin
            if StrToFloat(ProfitValue) < 0 then col := clRed else col := clGreen;
            ChartLine.Series[0].AddXY(DateValue, StrToFloat(ProfitValue), '', col );
        end;
        Results.Next;
    end;

end;
{== LINE CHART ===========================================================================================}
Dmitry.

Re: тестируем график...

Дмитрий это просто ЧУДЕСНО!!!
СПАСИБО!!!

Re: тестируем график...

Дмитрий, спасибо за примеры кодов! Получилось создать график. Только возникло два вопроса:
1. Как сделать график чтобы ось значений ProfitValue начиналась с нуля?
2. Как на графике сделать несколько линий?
Если не сложно, приведите примеры таких кодов.

Re: тестируем график...

Vitaly wrote:

Дмитрий, спасибо за примеры кодов! Получилось создать график. Только возникло два вопроса:
1. Как сделать график чтобы ось значений ProfitValue начиналась с нуля?
2. Как на графике сделать несколько линий?
Если не сложно, приведите примеры таких кодов.



1.Для этого вы можете установить максимальное и минимальное значение оси

    ChartLine.LeftAxis.Automatic := False;
    ChartLine.LeftAxis.Minimum := 0;
    ChartLine.LeftAxis.Maximum := 10000;

данный код необходимо разместить после кода, который заполняет график данными.


2. Сделал для вас проект с примером.

Post's attachments

Attachment icon Chart Ex on Form.zip 7.85 kb, 567 downloads since 2016-06-01 

Dmitry.

Re: тестируем график...

Дмитрий, огромное спасибо!

13 (edited by RZ-007 2016-08-31 21:17:49)

Re: тестируем график...

Всем привет!!!
имею такой скрипт:

var
   ChartLine: TChart;
procedure Form1_OnShow (Sender: string; Action: string);
begin
  ChartLine := TChart.Create(Form1);
  ChartLine.Parent := Form1.Panel1;
  ChartLine.Align := alClient;
  ChartLine.AddSeries(TLineSeries.Create(ChartLine));
  ChartLine.Series[0].XValues.DateTime := True;
  ChartLine.View3D := False; //  отключить 3д
end;

 procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    Results: TDataSet;
    DateValue: Double;
    ProfitValue: string;
    i,c: integer;

begin
    ChartLine.Series[0].Clear;

    c := Form1.TableGrid1.RowCount-1;
    for i := 0 to c do
    begin
        if ValidDate(Form1.TableGrid1.Cells[1, i]) then DateValue := StrToDate(Form1.TableGrid1.Cells[1, i]);
        ProfitValue := Form1.TableGrid1.Cells[2, i];

        if ValidFloat(ProfitValue) then ChartLine.Series[0].AddXY(DateValue, StrToFloat(ProfitValue) );
    end;
end;

т.е. данные для графика берутся из TableGrid1...
это РАБОТАЕТ ОК!!!
ПРОБЛЕМА в том, что если дата от предыдущей даты с большим разрывом, то график теряет "красоту"...
Вопрос: есть способ откорректировать скрипт, чтоб по оси где "дата"...
дата распределялась равномерно, не смотря большой разрыв между датами???
Заранее СПАСИБО!!!

Post's attachments

Attachment icon Скриншот 31-08-2016 220037.png 16.56 kb, 259 downloads since 2016-08-31 

Re: тестируем график...

RZ-007
Попробуйте так

var
   ChartLine: TChart;
   
procedure Form1_OnShow (Sender: string; Action: string);
begin
  ChartLine := TChart.Create(Form1);
  ChartLine.Parent := Form1.Panel1;
  ChartLine.Align := alClient;
  ChartLine.AddSeries(TLineSeries.Create(ChartLine));
  //ChartLine.Series[0].XValues.DateTime := True;
  ChartLine.View3D := False; //  отключить 3д
end;

 procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    Results: TDataSet;
    DateValue: Double;
    ProfitValue: string;
    i,c: integer;
    x: integer;
begin
    ChartLine.Series[0].Clear;
    x := 0;
    
    c := Form1.TableGrid1.RowCount-1;
    for i := 0 to c do
    begin
        if ValidDate(Form1.TableGrid1.Cells[1, i]) then DateValue := StrToDate(Form1.TableGrid1.Cells[1, i]);
        ProfitValue := Form1.TableGrid1.Cells[2, i];

        if ValidFloat(ProfitValue) then ChartLine.Series[0].AddXY(x, StrToFloat(ProfitValue), DateToStr(DateValue) );
        Inc(x);
    end;
end;
Dmitry.

Re: тестируем график...

Дмитрий..это просто чудо!!!  РАБОТАЕТ !!!
Два микро вопросика, для красоты графика....
профит слился с датой....
ВОПРОС:
1.) возможно окрасить профит в другой цвет....
а.) просто окрасить в другой цвет...
б.) если профит >0, тогда в синий...
    если профит <0, тогда в красный...
2.) разделить профит от даты многоточием
      (1000   ...  31.05.2016)
рисунок прилогается...

Post's attachments

Attachment icon Скриншот 01-09-2016 161412.png 53.6 kb, 268 downloads since 2016-09-01 

Re: тестируем график...

RZ-007 wrote:

Дмитрий..это просто чудо!!!  РАБОТАЕТ !!!
Два микро вопросика, для красоты графика....
профит слился с датой....
ВОПРОС:
1.) возможно окрасить профит в другой цвет....
а.) просто окрасить в другой цвет...
б.) если профит >0, тогда в синий...
    если профит <0, тогда в красный...
2.) разделить профит от даты многоточием
      (1000   ...  31.05.2016)
рисунок прилогается...

1.

замените эту строку

if ValidFloat(ProfitValue) then ChartLine.Series[0].AddXY(x, StrToFloat(ProfitValue), DateToStr(DateValue) );

на

        if ValidFloat(ProfitValue) then
        begin
            if StrToFloat(ProfitValue) > 0 then
                ChartLine.Series[0].AddXY(x, StrToFloat(ProfitValue), DateToStr(DateValue), clBlue)
            else ChartLine.Series[0].AddXY(x, StrToFloat(ProfitValue), DateToStr(DateValue), clRed);
        end;

2. К сожалению нет такой возможности.

Dmitry.

17 (edited by bullet13 2016-09-06 07:37:31)

Re: тестируем график...

Здравствуйте, Дмитрий.
Подскажите пожалуйста как построить график представленный на рисунке.
Спасибо.

Post's attachments

Attachment icon gr.jpg 27.51 kb, 287 downloads since 2016-09-05 

18 (edited by RZ-007 2016-09-07 21:44:19)

Re: тестируем график...

Здравствуйте Дмитрий!!!
ПОСТ №16...Замечательное решение,
но в моём случае вопрос остался открытым...
============================================
ОК!!!...в этом окошке видно отрицательный профит, но
профит сливается с датой!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ЕСТЬ ВОЗМОЖНОСТЬ :
1.) как то их разделить?
2.) в окошке окрасить  шрифт(профита) или дату?
============================================
Взгляните пожалуйста рисунок...

Post's attachments

Attachment icon Скриншот 08-09-2016 000059.png 47.77 kb, 275 downloads since 2016-09-07 

Re: тестируем график...

bullet13 wrote:

Здравствуйте, Дмитрий.
Подскажите пожалуйста как построить график представленный на рисунке.
Спасибо.

Приветствую,


Сделал для вас пример:

Post's attachments

Attachment icon Chart on Form - bar grouped.zip 7.73 kb, 560 downloads since 2016-09-08 

Dmitry.

Re: тестируем график...

RZ-007 wrote:

Здравствуйте Дмитрий!!!
ПОСТ №16...Замечательное решение,
но в моём случае вопрос остался открытым...
============================================
ОК!!!...в этом окошке видно отрицательный профит, но
профит сливается с датой!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ЕСТЬ ВОЗМОЖНОСТЬ :
1.) как то их разделить?
2.) в окошке окрасить  шрифт(профита) или дату?
============================================
Взгляните пожалуйста рисунок...

К сожалению нет возможности разделить их либо окрасить шрифт профита или даты.

Dmitry.

Re: тестируем график...

Спасибо Дмитрий...это не критично!!!

Re: тестируем график...

DriveSoft wrote:
bullet13 wrote:

Здравствуйте, Дмитрий.
Подскажите пожалуйста как построить график представленный на рисунке.
Спасибо.

Приветствую,


Сделал для вас пример:

Спасибо!!

Re: тестируем график...

Не могли бы вы сделать пример графика со связанными списками и выборкой из главной таблицы если вас не затруднит. Как говорится пример останется на форуме. Я набросал сколько смог. В процессе поиска данные для графика брать из главной таблицы и строить график. Сделал из ваших проектов пример. Пример в сообщении и скрин. Ссылка на скрин https://cloud.mail.ru/public/2DDv/9Q3xqwnvv. Заранее спс.

Post's attachments

Attachment icon Связанные списки.zip 339.37 kb, 486 downloads since 2016-11-29 

Re: тестируем график...

Игоревич wrote:

Не могли бы вы сделать пример графика со связанными списками и выборкой из главной таблицы если вас не затруднит. Как говорится пример останется на форуме. Я набросал сколько смог. В процессе поиска данные для графика брать из главной таблицы и строить график. Сделал из ваших проектов пример. Пример в сообщении и скрин. Ссылка на скрин https://cloud.mail.ru/public/2DDv/9Q3xqwnvv. Заранее спс.

Готово. Сделал только для стран, для регионов и городов аналогично, только SQL запрос чуть поправить.

Post's attachments

Attachment icon Связанные списки_Chart.zip 10.81 kb, 514 downloads since 2016-11-29 

Dmitry.

Re: тестируем график...

Оперативно огромное спс.