Z
zql1982000
Unregistered / Unconfirmed
GUEST, unregistred user!
老大们救命啊,我不是很会用DELPHI可我们变态的老师非要我做一个实验数据处理的软件
我想用Tchart画光滑的曲线,意识是:我有两个数组X,Y,分别放着X坐标,Y坐标的直,现在我想从数组中读取这些值来画一条差不多光滑的曲线,我看了一个网页 它是这样的 (见下面)
我发现他确实可以画出曲线来,可是我怎么边它的数据换成我自己的数据啊 而不是用它的
Series1.FillSampleValues(30);这句演示的数据 我是这样做的
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
xx[1]:=1;
xx[2]:=2;
xx[3]:=3;
xx[4]:=4;
xx[5]:=5;
xx[6]:=7;
yy[1]:=1;
yy[2]:=3;
yy[3]:=6;
yy[4]:=8;
yy[5]:=9;
yy[6]:=9;
for i:=1 to 6do
begin
chart1.Series[1].AddXY(xx,yy);
end;
//Series1.FillSampleValues(4);
Series2.DataSource:=Series1;
Series1.Visible:=False;
Series1.Title:='标准曲线';
end;
可是老画出来的是折线 ,老大们救救我
///--------------------------------
TeeChart控件绘制出光滑的B样条线插值曲线
今天研究TeeChart,搞清楚了Smoothing B-Spline!
这下可以根据LineSeries和SmoothingFunction,绘制出光滑的曲线了!
需要注意的要点是:
(1) 先加入一个一般的TLineSeries类型的线系列Series1。
(2) 加入显示B样条线插值的线系列Series2时,是选择一般的线系列TLineSeries,同时选定其Functions页的Extended子页的Smoothing项。
(3) 然后设定Smoothing B-Spline系列的Data Source页。
选定 Function -->Smoothing
Source Series子页中的Series为Series1,YValues为Y
Options子页中的Interpolate不要选择,Factor 设定为6
点击Apply后,关闭对话框。
-----------------------------
有关设定如下:
object Series2: TLineSeries
Marks.Callout.Brush.Color = clBlack
Marks.Visible = False
DataSource = Series1
SeriesColor = clBlack
Pointer.InflateMargins = True
Pointer.Style = psRectangle
Pointer.Visible = False
XValues.Name = 'X'
XValues.Order = loAscending
YValues.Name = 'Y'
YValues.Order = loNone
YValues.ValueSource = 'Y'
object TeeFunction1: TSmoothingFunction
Period = 1.000000000000000000
Interpolate = False
Factor = 6
end
end
程序代码如下:
unit CBSpline;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, TeeSpline;
type
TForm1 = class(TForm)
Chart1: TChart;
Series2: TLineSeries;
TeeFunction1: TSmoothingFunction;
Series1: TLineSeries;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Series1.FillSampleValues(30);
Series1.Visible:=False;
end;
end.
我想用Tchart画光滑的曲线,意识是:我有两个数组X,Y,分别放着X坐标,Y坐标的直,现在我想从数组中读取这些值来画一条差不多光滑的曲线,我看了一个网页 它是这样的 (见下面)
我发现他确实可以画出曲线来,可是我怎么边它的数据换成我自己的数据啊 而不是用它的
Series1.FillSampleValues(30);这句演示的数据 我是这样做的
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
xx[1]:=1;
xx[2]:=2;
xx[3]:=3;
xx[4]:=4;
xx[5]:=5;
xx[6]:=7;
yy[1]:=1;
yy[2]:=3;
yy[3]:=6;
yy[4]:=8;
yy[5]:=9;
yy[6]:=9;
for i:=1 to 6do
begin
chart1.Series[1].AddXY(xx,yy);
end;
//Series1.FillSampleValues(4);
Series2.DataSource:=Series1;
Series1.Visible:=False;
Series1.Title:='标准曲线';
end;
可是老画出来的是折线 ,老大们救救我
///--------------------------------
TeeChart控件绘制出光滑的B样条线插值曲线
今天研究TeeChart,搞清楚了Smoothing B-Spline!
这下可以根据LineSeries和SmoothingFunction,绘制出光滑的曲线了!
需要注意的要点是:
(1) 先加入一个一般的TLineSeries类型的线系列Series1。
(2) 加入显示B样条线插值的线系列Series2时,是选择一般的线系列TLineSeries,同时选定其Functions页的Extended子页的Smoothing项。
(3) 然后设定Smoothing B-Spline系列的Data Source页。
选定 Function -->Smoothing
Source Series子页中的Series为Series1,YValues为Y
Options子页中的Interpolate不要选择,Factor 设定为6
点击Apply后,关闭对话框。
-----------------------------
有关设定如下:
object Series2: TLineSeries
Marks.Callout.Brush.Color = clBlack
Marks.Visible = False
DataSource = Series1
SeriesColor = clBlack
Pointer.InflateMargins = True
Pointer.Style = psRectangle
Pointer.Visible = False
XValues.Name = 'X'
XValues.Order = loAscending
YValues.Name = 'Y'
YValues.Order = loNone
YValues.ValueSource = 'Y'
object TeeFunction1: TSmoothingFunction
Period = 1.000000000000000000
Interpolate = False
Factor = 6
end
end
程序代码如下:
unit CBSpline;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, TeeSpline;
type
TForm1 = class(TForm)
Chart1: TChart;
Series2: TLineSeries;
TeeFunction1: TSmoothingFunction;
Series1: TLineSeries;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Series1.FillSampleValues(30);
Series1.Visible:=False;
end;
end.