Sign in Join
Wiki copytemporary

TAChart Tutorial: Getting started/ja: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## はじめに
22
33![](/wiki-images/2/2f/Tachart_getting_started_step6.png)
44
55Lazarusフォームにグラフ等を追加したい場合は、[[TAChart|TAChartを]]見てください。 これは、グラフ等を描画するための標準のLazarusパッケージです。
66
77このチュートリアルでは、TAChartによっていくつかの基本的な数学関数を描画します。 関数の3つの折れ線グラフを作成します。
88
99- y=cos(x),
1010- y=sin(x), and
1111- y=cos(x)*sin(x).
1212
1313おそらく、ここで「series」と「chart」という言葉を詳しく説明する必要があるかもしれません。 グラフの図全体が「chart」であり、各関数グラフは「series」と呼ばれる曲線(直線)として表示されます。 (データの各点を線で接続する)折れ線グラフを使用するため、「LineSeries」を使用します。 もちろん、TAChartでは、棒グラフ、面グラフ、円グラフ、またはスプライン曲線やフィット曲線などの高度なタイプなど、他の多くのタイプの曲線(直線)を使用できます。
1414
1515## 必要なもの
1616
1717このガイドは非常に基本的なものになります。 もちろん、 [[Object Pascal]] 言語とLazarus [[IDE|IDEを]]使用するための基本的な知識は必要です。
1818
1919TAChartパッケージはLazarusに含まれているので、インターネット上で探す必要はありません。
2020
21-`ただし、TAChartは活発に開発されており、一部の機能はバージョンごとに変更される可能性があるため、あまり古いバージョンのLazarusは使用しないでください。`
21+```text
22+ただし、TAChartは活発に開発されており、一部の機能はバージョンごとに変更される可能性があるため、あまり古いバージョンのLazarusは使用しないでください。
23+```
2224
2325このチュートリアルは順番に段階を追って実行するのが最適です。 ただし、必要に応じて、この記事の最後にある完成したプロジェクトのソースコード [[Source code|source code]] を使用することもできます。
2426
2527## 新規プロジェクト(Chartの追加)
2628
2729![](/wiki-images/9/95/TAChart_component_palette.png)
2830
2931まず、Lazarusで新しいプロジェクトを作成し、コンポーネントパレット [[Component Palette|component palette]] で [[Chart tab|"Chart"タブのページを]]選択します。 一番左のアイコンである [[TChart]] コンポーネントをクリックして、フォームに追加します。 標準的なx軸とy軸を持つ空の図が表示されます。
3032
3133![](/wiki-images/6/63/TAChart_GettingStarted_Step1.png)
3234
3335## グラフ(series)の追加
3436
3537次にグラフ(series)を追加しましょう。
3638
37-`そのためには、グラフをダブルクリックします(または右クリックして、コンテキストメニューから[edit series(系列の編集)]を選択します)。 TAChart seriesエディタが表示されます。 それはまだ空白ですが、「追加(+)」を選択すると、TAChartパッケージ内で使用可能なすべてのグラフ(series)のタイプのメニューが表示されます。 「line series(折れ線グラフ)」を選択します。 チャートに割り当てられる合計3つの折れ線グラフを作成するには、これをあと2回繰り返します。 それらにはまだデータがないため、チャートにはまだグラフは表示されていません。 データがない→なにも表示しない。 それでは始めましょう。`
39+```text
40+そのためには、グラフをダブルクリックします(または右クリックして、コンテキストメニューから[edit series(系列の編集)]を選択します)。 TAChart seriesエディタが表示されます。 それはまだ空白ですが、「追加(+)」を選択すると、TAChartパッケージ内で使用可能なすべてのグラフ(series)のタイプのメニューが表示されます。 「line series(折れ線グラフ)」を選択します。 チャートに割り当てられる合計3つの折れ線グラフを作成するには、これをあと2回繰り返します。 それらにはまだデータがないため、チャートにはまだグラフは表示されていません。 データがない→なにも表示しない。 それでは始めましょう。
41+```
3842
3943![](/wiki-images/6/6f/TAChart_GettingStarted_Step1a.png)
4044
4145その前に、オブジェクトインスペクターツリーを見てみましょう。 TAChartはクラスとコンテナの非常に複雑なアーキテクチャを使用しているため、オブジェクトツリーを理解することも重要です。 プロジェクトの現在の状態では、TChartコンポーネントを親としてその子に3本の折れ線グラフ(line series)、およびさらに縦軸(y軸、left)と横軸(x軸、Bottom)を子として持つAxisListが表示されています。 series(グラフ曲線)名は、Chart \<番号\> \<グラフタイプ(SeriesType)\> \<番号\>という形式で構成されます。
4246
4347![](/wiki-images/c/ce/Tachart_getting_started_object_tree.png)
4448
45-`SinSeries(sin曲線)``、 ``CosSeries(cos曲線)``、 ``SinCosSeries(sincos曲線)``などのようにわかりやすい名前を付けたいときは? そのためには各series(グラフ曲線)をクリックし、オブジェクトインスペクター内の対応するフィールド(Nameプロパティ)でseries ``名``(グラフ曲線 ``名``)を変更します。`
49+```text
50+SinSeries(sin曲線)、 CosSeries(cos曲線)、 SinCosSeries(sincos曲線)などのようにわかりやすい名前を付けたいときは? そのためには各series(グラフ曲線)をクリックし、オブジェクトインスペクター内の対応するフィールド(Nameプロパティ)でseries 名(グラフ曲線 名)を変更します。
51+```
4652
4753## データの追加
4854
4955次に、データを追加します。 最も簡単な方法は、フォームが作成されるときにデータも作成することです。つまり、フォームの `OnCreate` イベントのハンドラーに処理を記述します。 もちろん、「実際の」プロジェクト(より実用的なプログラム)では、計算を開始するボタンのクリック後やファイルからデータを読み込んだ後など、他のタイミングでデータが追加されるでしょう。
5056
5157``` pascal
5258procedure TForm1.FormCreate(Sender: TObject);
5359const
5460 N = 100;
5561 MIN = -10;
5662 MAX = 10;
5763var
5864 i: Integer;
5965 x: Double;
6066begin
6167 for i:=0 to N-1 do begin
6268 x := MIN + (MAX - MIN) * i /(N - 1);
6369 SinSeries.AddXY(x, sin(x));
6470 CosSeries.AddXY(x, cos(x));
6571 SinCosSeries.AddXY(x, sin(x)*cos(x));
6672 end;
6773end;
6874```
6975
7076この手続き( [[Procedure|procedure]] )では、series(グラフ曲線)ごとに100個のデータポイントを作成します。 xの値は、 `MIN` と `MAX`の間で等間隔になるように計算されます。ここでは-10から10までを100等分した0.2間隔です。 重要なのは、各series(グラフ曲線)毎に `AddXY` [[Method|method]] を呼び出すことです。 このメソッドは、各データポイントのx座標とy座標を取得し、それらを内部リストに追加します。 このメソッドのオーバーロードバージョンもあり、各データポイントのテキストラベルと個別の色を渡すこともできますが、ここではこの機能は必要ありません。
7177
7278上記のリストは、いわゆるチャートソースです。これは、プロット用のデータを提供するクラス( [[Class|class]] )です。 組み込みのチャートソースを使用することも、シリーズを別のチャートソースにリンクすることもできます。 コンポーネントパレットには、次のようなさまざまなチャートソースがあります。
7379
7480- `TListChartSource` これはデータをリストに格納します(このタイプはseriesで内部的に使用されます)
7581- `TDBChartSource` データベース内のレコードとフィールドへのインターフェイス
7682- `TUserDefinedChartSource` これにより、たとえば、ユーザー定義レコードの配列に格納されているデータへの非常に一般的なアクセスが可能になります
7783- `TCalculatedChartSource` これにより、あるseriesを分析し、結果を別のseriesに表示できます。
7884
7985ただし、ChartSourceで十分です。この入門プロジェクトでは、組み込みのソースで十分です。
8086
8187![](/wiki-images/b/b8/Tachart_getting_started_step2.png)
8288
8389では、プログラムをコンパイルしましょう。3つの曲線が表示され、x軸は自動的に-10から10までのデータ範囲をカバーします。 まあそれほど悪くはありませんが、完璧にはほど遠いです:この図は非常に紛らわしいですし個々の線を区別することはできません。 また、どのseries(グラフ曲線)がどの関数のものなのかわかりません。
8490
8591## Series(グラフ曲線)の書式
8692
8793各series(グラフ曲線)の色を変えてみませんか? これを行うには、オブジェクトツリーで各series(グラフ曲線)を選択し、以下のオブジェクトインスペクターで、プロパティ [[Property|property]] `SeriesColor` を必要に応じて変更します。 `SeriesColor` は、データポイントを結ぶ線の色です。
8894
8995再コンパイルすると、シリーズが色付きで表示されます。 しかし、それでも異なる機能を区別することはできません。 必要なのはlegend(凡例)です。
9096
9197## 凡例(legend)の追加
9298
9399グラフ(SeriesではなくChart)を強調表示し、オブジェクトインスペクターで、 `Legend` (凡例)まで下にスクロールして、サブプロパティを開きます。 サブプロパティの一番下に、デフォルトで `false` である `Visible` があります。したがって、それを `true` に設定して、再コンパイルします。
94100
95101![](/wiki-images/2/2e/Tachart_getting_started_step3.png)
96102
97103少し良くなってきました。 足りないのは、「`y = sin(x)`」のような各series(グラフ曲線)の説明です。 そのために、各series(グラフ曲線)にはプロパティ `Title` があります。これは、対応するseries(グラフ曲線)の記号とともに、各エントリの凡例に表示されるテキストです。 したがって、すべてのシリーズをもう一度確認し、オブジェクトインスペクターを使用して、 `Title` をそれぞれ `y=sin(x)`, `y=cos(x)`、および `y=sin(x)*cos(x)`に設定する必要があります。 (こちらはChartのプロパティではなくそれぞれのseries(グラフ曲線)のプロパティです)
98104
99105![](/wiki-images/5/5f/Tachart_getting_started_step4.png) ![](/wiki-images/2/20/Tachart_getting_started_step4a.png)
100106
101107これで、再コンパイルすると、チャートはほぼ完璧になります。 「ほぼ完璧」です-凡例がかなり大きく、図が残りのスペースに押し込まれているためです。 もちろん、フォームのサイズを大きくすることもできます。 しかし、図の下に凡例を配置することはできませんか? できます。チャート(SeriesではなくChart)のプロパティ `Legend` に戻り、 `Alignment` を `laBottomCenter`に設定します。 また、 `ColumnCount` を `3`に設定する必要があります。そうしないと、凡例が1行にならずに1項目ごとの3行になってしまいます。
102108
103109![](/wiki-images/3/37/Tachart_getting_started_step5.png)
104110
105111おっと! --ウィンドウの幅が十分でないため、3番目の凡例が途中で切り捨てられています。 チャート(Chart)のAline(配置)プロパティを `alClient` にして(Formいっぱいまで広がる)、ウィンドウ(Form)の幅を少し増やすと凡例が欠けることなくすべて表示されます。
106112
107113## 微調整
108114
109115さらにいくつか改善できる点があります。軸にはそれぞれ「x軸」や「y軸」などのタイトルが必要であり、グラフの上にもタイトルが必要です。
110116
111117x軸のタイトルを設定するには、オブジェクトツリーでTChartのAxisList子コンポーネントの `Bottom` :TChartAxisを選択するか、オブジェクトインスペクタのChartのプロパティ `BottomAxis` に移動します。 `Title` プロパティが見つかるのでそのサブプロパティを開きます。 `Caption` フィールドのテキストは、グラフのx軸の近くにタイトルとして表示されます。 `Visible` を `true`に設定することを忘れないでください。 タイトルのフォントスタイルを太字に設定することもできます。そのプロパティは `LabelFont`の下にあります。 y軸(左軸 `Left axis`)についても同じことを繰り返します。 (Left:TChartAxisコンポーネントのTitleプロパティまたはChartのLeftAxisプロパティのTitleサブプロパティのどちらでも可能)
112118
113119基本的に同じ手順を使用してグラフのタイトルを設定できます。グラフ(Chart)のプロパティ `Title`までスクロールし、 `Text` フィールドにタイトル文字を入力して(ここで複数行のテキストを使用することもできます)、 `Visible` を再び`true` に設定します。
114120
115121そして最後に、チャート領域の白い背景を使用することをお勧めします。これは、TChartのプロパティ `BackColor` によって変更されます。 また、グリッドはあまり強調しないでください。つまり、カラー `clSilver`を使用すると見栄えが良くなる可能性があります。 左軸と下軸のプロパティ `Grid.Color` を使用して変更します。
116122
117123## 完成!
118124
119125作成したグラフ(Chart)は最終的に次のようになります。 見栄えのいいものに出来上がりました。 難しくはありませんでしたね。
120126
121127TAChartについて詳しく知りたい場合は、公式のTAChartドキュメント( [[TAChart documentation]])を参照し、TAChartに付属している多くのデモのうちのいくつかを試してみるといいでしょう。 これらは、Lazarusのインストールされたフォルダの `components\tachart\demo` フォルダーにあります。
122128
123129![](/wiki-images/2/2f/Tachart_getting_started_step6.png)
124130
125131## ソースコード
126132
127133このチュートリアルプロジェクトのソースコードは、Lazarusがインストールされたフォルダの*components \\ tachart*の*tutorials \\ getting_started*フォルダーにあります。
128134
129135### Project file (getting_started.lpr)
130136
131137``` pascal
132138program project1;
133139
134140{$mode objfpc}{$H+}
135141
136142uses
137143 {$IFDEF UNIX}{$IFDEF UseCThreads}
138144 cthreads,
139145 {$ENDIF}{$ENDIF}
140146 Interfaces, // this includes the LCL widgetset
141147 Forms, Unit1, tachartlazaruspkg
142148 { you can add units after this };
143149
144150{$R *.res}
145151
146152begin
147153 RequireDerivedFormResource := True;
148154 Application.Initialize;
149155 Application.CreateForm(TForm1, Form1);
150156 Application.Run;
151157end.
152158```
153159
154160### Pascal Source Code (Unit1.pas)
155161
156162``` pascal
157163unit Unit1;
158164
159165{$mode objfpc}{$H+}
160166
161167interface
162168
163169uses
164170 Classes, SysUtils, FileUtil, TAGraph, TASeries, Forms, Controls, Graphics,
165171 Dialogs;
166172
167173type
168174
169175 { TForm1 }
170176
171177 TForm1 = class(TForm)
172178 Chart1: TChart;
173179 SinSeries: TLineSeries;
174180 CosSeries: TLineSeries;
175181 SinCosSeries: TLineSeries;
176182 procedure FormCreate(Sender: TObject);
177183 private
178184 { private declarations }
179185 public
180186 { public declarations }
181187 end;
182188
183189var
184190 Form1: TForm1;
185191
186192implementation
187193
188194{$R *.lfm}
189195
190196{ TForm1 }
191197
192198procedure TForm1.FormCreate(Sender: TObject);
193199const
194200 N = 100;
195201 MIN = -10;
196202 MAX = 10;
197203var
198204 i: Integer;
199205 x: Double;
200206begin
201207 for i:=0 to N - 1 do begin
202208 x := MIN + (MAX - MIN) * i / (N - 1);
203209 SinSeries.AddXY(x, sin(x));
204210 CosSeries.AddXY(x, cos(x));
205211 SinCosSeries.AddXY(x, sin(x)*cos(x));
206212 end;
207213
208214end;
209215
210216end.
211217```
212218
213219### Lazarus Form (Unit.lfm)
214220
215-``` pascal
221+``` lfm
216222object Form1: TForm1
217223 Left = 14
218224 Height = 244
219225 Top = 137
220226 Width = 347
221227 Caption = 'Form1'
222228 ClientHeight = 244
223229 ClientWidth = 347
224230 OnCreate = FormCreate
225231 LCLVersion = '1.1'
226232 object Chart1: TChart
227233 Left = 0
228234 Height = 244
229235 Top = 0
230236 Width = 347
231237 AxisList = <
232238 item
233239 Grid.Color = clSilver
234240 Minors = <>
235241 Title.LabelFont.Orientation = 900
236242 Title.LabelFont.Style = [fsBold]
237243 Title.Visible = True
238244 Title.Caption = 'y axis'
239245 end
240246 item
241247 Grid.Color = clSilver
242248 Alignment = calBottom
243249 Minors = <>
244250 Title.LabelFont.Style = [fsBold]
245251 Title.Visible = True
246252 Title.Caption = 'x axis'
247253 end>
248254 BackColor = clWhite
249255 Foot.Brush.Color = clBtnFace
250256 Foot.Font.Color = clBlue
251257 Legend.Alignment = laBottomCenter
252258 Legend.ColumnCount = 3
253259 Legend.Visible = True
254260 Title.Brush.Color = clBtnFace
255261 Title.Font.Color = clBlue
256262 Title.Font.Style = [fsBold]
257263 Title.Text.Strings = (
258264 'My first chart'
259265 )
260266 Title.Visible = True
261267 Align = alClient
262268 ParentColor = False
263269 object SinSeries: TLineSeries
264270 Title = 'y=sin(x)'
265271 LinePen.Color = clRed
266272 end
267273 object CosSeries: TLineSeries
268274 Title = 'y=cos(x)'
269275 LinePen.Color = clBlue
270276 end
271277 object SinCosSeries: TLineSeries
272278 Title = 'y=sin(x)*cos(x)'
273279 LinePen.Color = clGreen
274280 end
275281 end
276282end
277283```
278284
279285---
280286*From the Free Pascal wiki, page "TAChart Tutorial: Getting started/ja", as it stood on 2020-11-05 after a change by Higukenn, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history