IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> TChart, метки по осям, Отображение координат точек
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  1  +


Здравствуйте! Строю график по точкам в TChart вот так:

var t: array[1..10] of  real;

procedure TForm1.Button1Click(Sender: TObject);
var x,i: integer;
begin
t[1]:=0.375;
t[2]:=0.75;
t[3]:=1.875;
t[4]:=4.25;
t[5]:=16.375;
t[6]:=56.125;
t[7]:=350.625;
t[8]:=1943;
t[9]:=24000.5;
t[10]:=409353;
Series1.Clear;
x:=8;
for i:=1 to 10 do
begin
Series1.AddXY(x,t[i],'',clRed);
x:=x*2;
end;
end;

Автоматические метки по осям не устраивают. Нужно чтобы отображались только координаты точек (x, t[i]). С осью Х (BottomAxis) решила проблему просто через редактирование Edit Chart, поставив в свойствах оси Bottom - вкладка Labels - Style - Mark, предварительно установив XValue в Marks. А вот отобразить по оси У (LeftAxis) только значения t[i] не получается никак. Предполагаю, что нужно использовать событие OnGetAxisLabel, но я так и не смогла понять как правильно с ним работать. Пробовала делать так:
procedure TForm1.Chart1GetAxisLabel(Sender: TChartAxis;
Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
var i: integer;
begin
if (Sender=Chart1.LeftAxis) then
for i:=1 to 10 do
LabelText:=FloatToStr(t[i]);
end;

-везде выводится только последнее значение t[10].
Прикрепленное изображение
Подскажи, пожалуйста, как нужно сделать правильно?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






1) чуть-чуть по другому добавляем точки к Chart-у:
var
t: array[1 .. 10] of Double = ( // Это - просто для информации, что не обязательно задавать по отдельности
0.375, 0.75, 1.875, 4.25, 16.375,
56.125, 350.625, 1943, 24000.5, 409353
);

procedure TForm1.Button10Click(Sender: TObject);
var x,i: integer;
begin
Series1.Clear;
x:=8;
for i:=1 to 10 do
begin
Series1.AddXY(x,t[i],FloatToStr(t[i]),clRed); // А вот тут - коренное отличие: Text заполнен, а не пуст
x:=x*2;
end;
end;


2) свойства Left Axis -> Labels -> Style устанавливаем в Text. Это все. Но... Чтобы увидеть все метки при таких больших разбросах значений, придется увеличить размер компонента Chart, иначе нижние метки отображаться не будут.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  1  +


Отлично! то, что нужно good.gif Спасибо большое, volvo!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 5:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name