Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (3,768)  
Tera Term  (1,863)  
CrystalDiskInfo  (1,753)  
HandBrake Japanese Language Version  (1,682)  
CrystalDiskMark  (840)  
FFFTP  (808)  
ffdshow  (757)  
MergeDoc  (629)  
mixfont-mplus-ipa  (619)  
10  TortoiseSVN  (517)  
11  FreeMind  (445)  
12  BathyScaphe  (421)  
13  Amateras  (380)  
14  Boookends  (375)  
15  SMPlayer  (370)  
More >>

Gambas 2.0で簡単なグラフを描く

2007年12月26日 12:20 Mark-Alexander-Bain(2007年12月12日(水)) 1 2 3 4 5

データ系列が複数ある場合のグラフ

 次に、複数のデータ系列をグラフにしてみよう。ここでは、NovellとMicrosoftなど、数社の株価を比較できるようにする。まず、draw_chartサブルーチンを、企業コードが指定できるように変更する。

SUB draw_chart(company_symbols AS String[])

 次に、Form_Openを、draw_chartが必要なデータを入手できるように変更する。

PUBLIC SUB Form_Open()
IF make_connection() = TRUE THEN
draw_chart(Array("NOVL", "MSFT"))
END IF
END

 Y軸の目盛りを計算する際に使う最高値は、ここではグラフにする企業の株価全体で考える必要がある。そこで、SQL文を次のように変更する。

sql = "select max(value) as max_val from company_history where" &
" company_id in (select id from company_details where " &
" code in ( '" & company_symbols.Join("','") & "'))"

 SQLに不慣れな場合はPRINT (sql)を挿入するとよい。実行時に、次のようにSQL文がGambasコンソール・ウィンドウに表示される。

select max(value) as max_val from company_history
where company_id in (select id from company_details where code in ( 'NOVL','MSFT'))

 これをコピーして直接データベースに適用すれば、求めているデータが得られたかどうかを確認できる。

 次に、棒グラフを描くコードを削除(あるいはコメント化)し、折れ線グラフを描くコードを挿入する。FOR EACHループの中に入っているのは、各企業のデータを描くためだ。

FOR EACH symbol IN company_symbols
'All of our code for displaying the line chart for the relevant company
NEXT

 そして、データを入手するSQLを変更する。

sql = "select date,value from company_history where" &
" company_id in (select id from company_details where " &
" code = '" & symbol & "')"

 ここで、アプリケーションを実行してみよう。企業の数だけ折れ線が描かれるはずだ。しかし、どの折れ線がどの企業を表しているのかわからない。そこで、簡単なSELECT CASE文を挿入して色分けしよう。ループで折れ線を描くたびに線の色を順次変更するのだ。

SELECT CASE chart_color
CASE color.black
chart_color = color.red
CASE color.red
chart_color = color.green
CASE color.green
chart_color = color.yellow
CASE ELSE
chart_color = color.black
END SELECT

draw.ForeColor = chart_color

 もちろん、このコードはFOR EACHループの中、各企業の折れ線を描く直前に置く必要がある。そして、各企業の記号を対応する色で表示すれば完成だ。

IF x_pos = origin_x THEN
draw.Text(symbol, 0, y_pos)
END IF

 ここでIF文になっているのは、記号が初回の反復でだけ表示されるようにするためだ。コードは新しいxとyの位置が計算された直後に置く必要がある。これで、指定した企業の株価を比較する簡易なグラフは完成だ。

 このように、Gambas 2.0アプリケーションでは、データを簡単かつ短時間でグラフにすることができる。

 簡単なものからずっと凝ったものまで、さまざまなグラフを含むGambas 2.0プロジェクトを用意した。私のサイトから入手できるので、参考にして欲しい。

Linux.com 原文

最終更新:2008年02月25日 17:07
SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.