4
我可以在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