1つ目のグラフは散布図、2つ目のグラフは折れ線の
グラフを表示させたいと考え、以下のプログラムを書きましたが、
2つ目の折れ線が表示できません。
Delphi6を使ってます。
procedure TForm1.Button3Click(Sender: TObject);
var i: Integer;
max,min:real;
begin
Edit6.Text:=IntToStr(StringGrid1.RowCount-1);
n:=StrToInt(Edit6.Text);
m:=StrToInt(Edit19.Text);
l:=StrToInt(Edit20.Text);
Form2.Chartfx1.Width:=650;
Form2.Chartfx1.Height:=600;
Form2.Chartfx1.Angles3D := MAKELONG(60,30);
Form2.Chartfx1.Title[CHART_TOPTIT] := 'Gragh 1';
Form2.Chartfx1.AutoIncrement;
Form2.Chartfx1.OpenDataEx(COD_VALUES, 1,n);
Form2.Chartfx1.Decimals := 0;
Form2.Chartfx1.IniValue[0] := 100;
Form2.Chartfx1.ThisSerie := 0;
Form2.ChartfX1.SerLeg [0]:=Stringgrid1.Cells[m,0];
for i := 0 to n-1 do
begin
Form2.Chartfx1.Value[i] := StrtoFloat(StringGrid1.Cells[m+1,i+1]);
end;
Form2.Chartfx1.CloseData(COD_VALUES);
Form2.Chartfx1.OpenDataEx(COD_XVALUES, 1,n);
Form2.ChartfX1.SerLeg [0]:=Stringgrid1.Cells[l,0];
for i := 0 to n-1 do
begin
Form2.Chartfx1.XValue[i] := StrtoFloat(StringGrid1.Cells[l+1,i+1]);
Form2.Chartfx1.CloseData(COD_VALUES);
end;
begin
Form2.Chartfx1.ThisSerie := 1;
Edit6.Text:=IntToStr(StringGrid1.RowCount-1);
n:=StrToInt(Edit6.Text);
Form2.Chartfx1.Width:=650;
Form2.Chartfx1.Height:=600;
Form2.Chartfx1.Angles3D := MAKELONG(60,30);
Form2.Chartfx1.Title[CHART_TOPTIT] := 'Gragh 1';
Form2.Chartfx1.AutoIncrement;
Form2.Chartfx1.OpenDataEx(COD_VALUES, 1,2);
Form2.Chartfx1.Decimals := 0;
end;
max:=Form2.Chartfx1.Value[0];
for i:=2 to n do
if Form2.Chartfx1.Value[i]>max then max:=Form2.Chartfx1.Value[i];
Form2.Chartfx1.Value[0]:=max;
min:=Form2.Chartfx1.XValue[1];
for i:=2 to n do
if Form2.Chartfx1.XValue[i]<min then min:=Form2.Chartfx1.XValue[i];
Form2.Chartfx1.XValue[1]:=min;
Form2.Chartfx1.LineStyle ;
Form2.Chartfx1.CloseData(COD_VALUES);
Form2.ShowModal;
end;
こちらで単純化したサンプルでは、特に問題なく2つのグラフを
表示できました。ネット上のサンプルコードで問題なくです。
迷ったときは横着せず、情報を検索するとともに、単純化した
サンプルを使って検証するのがよろしいかと思います。
もしほかの人に実行して検証してもらうというときにも、単純化
されていればコピー・ペーストで実行してもらえるため、検証が
しやすいでしょう。
返信ありがとうごさいます。
単純化とは、余計なデータを省くことですか?
『最小限の再現コード』ってことです。
ツイート | ![]() |