Page 1 of 1

X axis scale

Posted: Fri Jan 14, 2005 3:21 am
by 9235196
I feed line series with 500 point.
So the tchart bottom axis is from 0 to 500.
now I want to change the x axis without affecting the series.
i want it to display 0 to 80 in x axis. How to do it?

I try to set the min max. But it only display 0 to 80 point, not all point.

Thank you

Herman

Posted: Fri Jan 14, 2005 6:30 am
by 9234468
I found no method to realize it without modifying data. But you can use following trick:

1. Add new helper serie (e.g. FastLine) with NO data to the chart
2. Set maximum and minimum of bottom axis to 0 and 80.
3. Assign TOP axis as horizontal axis of original serie
4. Hide TOP axis (Visible := False)

This procudure results in visual effect what you want, but you cannot use top axis further.

Re: X axis scale

Posted: Fri Jan 14, 2005 7:57 am
by Marjan
9235196 wrote:now I want to change the x axis without affecting the series.
i want it to display 0 to 80 in x axis. How to do it?
Herman
You want to rescale axis values, but don't want to change series values ? If yes, then all you must do is use chart OnGetAxisLabel event, and rescale each axis label. Something like this might do the trick:

Code: Select all

procedure TForm1.Chart1GetAxisLabel(Sender: TChartAxis;
  Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
var tmp: Double;
begin
  if Sender = Chart1.Axes.Bottom then
  begin
    // 1. retrieve axis "value" and translate it to double
    tmp := StrToFloat(LabelText);
    // 2. rescale axis label value.
    // In your case, scale factor is 80/500 = 0.16
    tmp := tmp * 0.16;
    // 3. transform label value back to string
    LabelText := FormatFloat(Sender.AxisValuesFormat,tmp);
  end;
end;