Я могу создать сложный барчер в Delphi с помощью TeeChart. Это использование значений и серий, добавленных в цикл. Я бы предпочел создать эту диаграмму, просто используя запрос в качестве источника данных и не добавляя каждый бар в виде отдельной серии внутри цикла. Есть ли лучший способ сделать это, или другой тип диаграммы, на который я должен смотреть? Данные представляют собой поперечное сечение породных типов из образца ямы скважины. Набор данных содержит одну запись для каждого измерения глубины и типа горных пород. Он отображается как единый вертикальный столбец пород, как образец ядра.Как сделать сложный планшет из набора данных с использованием teechart в delphi
+----+
| | record 1 - depth1, rock type 1
| |
+----+
| |
| |
| | record 2 - depth2, rock type 2
| |
+----+
| | record 3 - depth3, rock type 3
+----+
procedure TForm128.GenerateLithologyChart;
var
LSeries: TBarSeries;
i : integer;
LastBot : double;
procedure AddRockSeries(depth : double; col : TColor);
begin
LSeries := TBarSeries.Create(LithologyChart);
LithologyChart.AddSeries(LSeries);
LSeries.AddBar(0, '', clBlue);
if col=clNone then
LSeries.AddNullXY(0,depth,'')
else
LSeries.AddXY(0,depth,'',col);
LSeries.Marks.Visible := False;
LSeries.MultiBar := mbStacked;
LSeries.CustomBarWidth := 80;
end;
begin
LithologyChart.LeftAxis.Inverted := True;
LithologyChart.Title.Text.Text := 'Well Lithology - data-aware test';
LithologyChart.SeriesList.Clear;
AdoQuery1.First;
i := 0;
LastBot := 0;
while not AdoQuery1.Eof do begin
if abs(AdoQuery1.FieldByName('Strata Top').asFloat-LastBot) > 0.0005 then begin
// create blank cross section for the missing depth range
AddRockSeries(AdoQuery1.FieldByName('Strata Top').asFloat-LastBot, clNone);
end;
AddRockSeries(AdoQuery1.FieldByName('Strata Bottom').asFloat-AdoQuery1.FieldByName('Strata Top').asFloat, clRed);
LastBot := AdoQuery1.FieldByName('Strata Bottom').asFloat;
inc(i);
//if i = 3 then break;
AdoQuery1.Next;
end;
AdoQuery1.First;
end;
Фантастическая спасибо. Это хорошо работает. Теперь у меня есть еще несколько вопросов для решения с легендой - я должен создать новый вопрос? – user2455609
Конечно! Новый вопрос, новая тема – Yeray