Следующий код заполнит ряд с экспоненциальным данными:
uses Series, Math;
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
Chart1.View3D:=False;
Chart1.Legend.Visible:=false;
with Chart1.AddSeries(TLineSeries) as TLineSeries do
begin
Pointer.Visible:=true;
Pointer.Size:=2;
for i := 1 to 10 do
Add(Power(2, i));
end;
end;
Результат выглядит следующим образом:
Затем, если добавить следующий код выше :
Chart1.Axes.Left.Logarithmic:=true;
Теперь данные остаются теми же, но левые изменения оси шкалы в логарифмической шкале:
Вы также можете изменить формат этикетки, а именно:
Chart1.Axes.Left.AxisValuesFormat:='00e-0';
Chart1.Axes.Left.LabelsExponent:=true;
Edit:
Установка логарифмической базы 1,544 на TeeChart и настраиваемые ярлыки, чтобы показать эти метки на скриншоте:
uses Series, Math;
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
Chart1.View3D:=False;
Chart1.Legend.Visible:=false;
with Chart1.AddSeries(TLineSeries) as TLineSeries do
begin
Pointer.Visible:=true;
Pointer.Size:=2;
for i := 1 to 7 do
Add(Power(2, i));
end;
with Chart1.Axes.Left do
begin
Logarithmic:=True;
LogarithmicBase:=1.544;
MinorTicks.Visible:=false;
with Items do
begin
Clear;
Add(0.1, '0.1');
Add(1.2, '1.2');
Add(1.5, '1.5');
Add(2, '2');
Add(3, '3');
Add(5, '5');
Add(7, '7');
Add(10, '10');
Add(15, '15');
Add(20, '20');
Add(30, '30');
Add(40, '40');
Add(50, '50');
Add(70, '70');
Add(100, '100');
SetMinMax(0.1, 100);
end;
end;
end;
Это выглядит следующим образом:
Расстояние между 0.1 и 1.2 намного больше, чем на вашем скриншоте, и я не уверен, что это ошибка, или если это математически правильно.
Я могу изменить масштаб оси, чтобы начать с 1 вместо 0.1, чтобы сделать его выглядеть намного похож на скриншоте, но я не уверен, если это будет то, что вы хотите:
SetMinMax(1, 100);
http://stackoverflow.com/help/how-to-ask – Prasad
Указание экспоненты является инверсией логарифмической. Если логарифмическое свойство на оси не дает ожидаемого результата, пожалуйста, организуйте [sscce] (http://sscce.org/) – Yeray
@Yeray: Да, я знаю о связи между экспоненциальными и логарифмические шкалы. Вопрос не в математических основах. В TDBChart имеется встроенная опция для определения логарифмической шкалы. Я хотел бы знать, можно ли манипулировать осью в TDBChart, чтобы иметь экспоненциальный (обычно произвольный) масштаб или если для этого потребуется изменить исходный код TDBChart. – DRASIT