Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2009, 12:05   #1
cowboy
Форумчанин
 
Регистрация: 12.03.2009
Сообщений: 109
По умолчанию

Можно ли на один чарт наложить несколько серий с разной шкалой? ТО есть проще говоря разбить чарт на три части и для каждой точки на оси Х ,будет соответствовать три точки .. На эти три серии имеют абсолютно разную шкалу..

и как еще нарисовать не график а именно гистограмму....

Про первое..В идеале хочется получить что то типа как на приэттаченом файле..Просто если это раскидывать на три разных ЧАРТА , то из-за разница цифр в шкале оси будут расходится..
Изображения
Тип файла: jpg 2312312.jpg (32.5 Кб, 166 просмотров)

Последний раз редактировалось Stilet; 28.08.2009 в 08:46.
cowboy вне форума Ответить с цитированием
Старый 24.08.2009, 14:35   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Вот пример кода построение графиков:
Код:
procedure TForm1.SpeedButton11Click(Sender: TObject);
var
 c,d,c1,d1,fig,c2,d2,c3,d3,d4:real;
begin
 try
 With Form1.Series1 do
   begin
   Clear;
    c:=StrToInt(Form1.SG2.Cells[0,26]);
    d:=StrToInt(Form1.SG2.Cells[1,26]);
    c1:=StrToInt(Form1.SG2.Cells[2,26]);
    d1:=StrToInt(Form1.SG2.Cells[3,26]);
    Add(c,'2-ек',clGreen);
    Add(d, '3-ек', clYellow);
    Add(c1, '4-ок', clBlue);
    Add(d1, '5-ок', clRed);
  end;
   except
   on EConvertError do
     fig:=0;
  end;

 try
 with Form1.Series2 do
   begin
    Clear;
    c2:=StrToFloat(Form1.SG3.Cells[1,26]);
    d2:=StrToInt(Form1.SG3.Cells[2,26]);
    c3:=StrToInt(Form1.SG3.Cells[3,26]);
    d3:=StrToInt(Form1.SG3.Cells[4,26]);
    d4:=StrToInt(Form1.SG3.Cells[5,26]);
    Add(c2,'СБ',clGreen);
    Add(d2, 'КУ', clYellow);
    Add(c3, 'У', clBlue);
    Add(d3, 'О', clRed);
    Add(d4, 'ЧО', clRed);
   end;
  except
   on EConvertError do
     fig:=0;
  end;
Данные для построения берутся из StringGrid-a.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 24.08.2009, 15:04   #3
cowboy
Форумчанин
 
Регистрация: 12.03.2009
Сообщений: 109
По умолчанию

сделал вот так..
Код:
procedure TPagesDlg.SpeedButton1Click(Sender: TObject);
var
 c,d,c1,d1,fig,c2,d2,c3,d3,d4:real;
begin
 try
 With Series1 do
   begin
   Clear;
    c:=1;
    d:=2;
    c1:=3;
    d1:=4;
    Add(c,'2-åê',clGreen);
    Add(d, '3-åê', clYellow);
    Add(c1, '4-îê', clBlue);
    Add(d1, '5-îê', clRed);
  end;
   except
   on EConvertError do
     fig:=0;
  end;

 try
 with Series2 do
   begin
    Clear;
    c2:=100;
    d2:=200;
    c3:=300;
    d3:=400;
    d4:=500;
    Add(c2,'ÑÁ',clGreen);
    Add(d2, 'ÊÓ', clYellow);
    Add(c3, 'Ó', clBlue);
    Add(d3, 'Î', clRed);
    Add(d4, '×Î', clRed);
   end;
  except
   on EConvertError do
     fig:=0;
  end;
 chart17.AddSeries(series1);
chart17.AddSeries(Series2);
end;
Графики на одном чарте..Но шкалы то для одного и другого одинаковые.. ТАк если на одной серии диапазон от 1 до 15 а на второй от 1500 до 2000 то первыю серию мы в жизнь ощушать на чарте не будем
cowboy вне форума Ответить с цитированием
Старый 27.08.2009, 18:48   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

А зачем Вы пишете это:
Код:
 
chart17.AddSeries(series1);
chart17.AddSeries(Series2);
???
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.08.2009, 10:54   #5
cowboy
Форумчанин
 
Регистрация: 12.03.2009
Сообщений: 109
По умолчанию

ну накладываю каждую серию на график

даже если сделать вот так
Код:
procedure TPagesDlg.BitBtn4Click(Sender: TObject);
var
 c,d,c1,d1,fig,c2,d2,c3,d3,d4:real;
begin
 try
 With Series1 do
   begin
   Clear;
    c:=StrToInt('1');
    d:=StrToInt('2');
    c1:=StrToInt('2');
    d1:=StrToInt('2');
    Add(c,'2-åê',clGreen);
    Add(d, '3-åê', clYellow);
    Add(c1, '4-îê', clBlue);
    Add(d1, '5-îê', clRed);
  end;
   except
   on EConvertError do
     fig:=0;
  end;

 try
 with Series2 do
   begin
    Clear;
    c2:=StrToFloat('500');
    d2:=StrToInt('500');
    c3:=StrToInt('500');
    d3:=StrToInt('500');
    d4:=StrToInt('500');
    Add(c2,'ÑÁ',clGreen);
    Add(d2, 'ÊÓ', clYellow);
    Add(c3, 'Ó', clBlue);
    Add(d3, 'Î', clRed);
    Add(d4, '×Î', clRed);
   end;
  except
   on EConvertError do
     fig:=0;

end;
end;
Шкала для второго графика просто не видна..И второй график вообще не виден..Нужно что бы ему соответствовала своя шкала и он был отчетливо виден

Последний раз редактировалось Stilet; 28.08.2009 в 11:12.
cowboy вне форума Ответить с цитированием
Старый 02.09.2009, 17:22   #6
cowboy
Форумчанин
 
Регистрация: 12.03.2009
Сообщений: 109
По умолчанию

Скорее всего стандартным компонентом CHART этого не сделать..Придется искать другой компонент.
cowboy вне форума Ответить с цитированием
Старый 02.09.2009, 17:28   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а три чарта не сделать?
иль я задание не понял
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.09.2009, 18:16   #8
cowboy
Форумчанин
 
Регистрация: 12.03.2009
Сообщений: 109
По умолчанию

В данном можно и три чарта..Но за счет разности в шкале они получаются чуть чуть сдвинуты относительно друг друга..Как в приэттаченом файле..
Изображения
Тип файла: jpg Безымянный.jpg (36.3 Кб, 155 просмотров)
cowboy вне форума Ответить с цитированием
Старый 02.09.2009, 21:17   #9
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

а попробовать синхронизировать шкалы и размеры (положения ) чартов?
s.Creator вне форума Ответить с цитированием
Старый 04.09.2009, 16:24   #10
cowboy
Форумчанин
 
Регистрация: 12.03.2009
Сообщений: 109
По умолчанию

Нужно ли для этого создавать свою ось вот таким образом
Код:
  {  MyAxis := TChartAxis.Create(Chart);
    series1.CustomVertAxis:=myaxis;
    With MyAxis do  begin
    Axis.Color:=clGreen ;
  //  Title.Caption := 'Extra axis' ;
    Title.Font.Style:=[fsBold];
    Title.Angle := 10;
    PositionPercent := 10; //percentage of Chart rectangle
    StartPosition:=50;
    EndPosition:=100;
    end;   }
Или можно синхронизировать стандартные?

Подскажите пожалуйста как мне синхронизировать оси..

Помогите плиз как мне синхрофнизировать оси!

Последний раз редактировалось Stilet; 14.09.2009 в 13:25.
cowboy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент Chart Interesno Общие вопросы C/C++ 1 11.04.2009 11:40
Chart StartMis Общие вопросы Delphi 2 19.10.2008 11:33
Компонент Chart. Небесный Общие вопросы Delphi 17 09.02.2008 08:48
Рисование в Chart SunKnight Общие вопросы Delphi 3 07.02.2008 09:16
компонент chart malevich Общие вопросы Delphi 3 04.02.2007 19:53