GUIの作成(2)
データファイルの作成
次に、実際にグラフを表示するデータファイルを作成します。Excelデータは行列になっていますから、グリッド形式のデータファイルを作成します。
データは、Excelのセルデータをそのままコピーし、グリッド形式であること、行列数、欠損値、XYの増分、グリッドの起点を作成します。
! グリッドには 10*6 のデータ点があります。 ! 欠損値は 1000000 です。 ! グリッドの X の増分は 1.0、Y の増分は 1.0 です。 ! グリッドの起点は X = 0、Y = 0 です。 ! 60 個のデータ値が続きます。それぞれのデータ値は各グリッド点に対応します。 GRID 10 6 1000000 1.0 1.0 0 0 2132230 2431560 2653320 2127800 2224450 2653430 2333130 2435430 2115500 2029320 3326780 3435560 3237980 3332240 3124870 3034980 3327760 3653430 3119900 3235920 3654780 3703340 3693670 3652200 3712320 3590900 3625730 3639980 3678400 3662320 4012120 4121210 4215870 4198980 4019980 4003030 4182390 4201910 4116570 4094960 4345540 4299870 4345500 4293260 4099300 4435000 4232010 4332300 4300500 4295980 2909800 2898900 3001000 2998700 2898900 3002300 2879000 2987980 2899790 2994500
作成したら、「mydata.dat」というファイル名で保存します。単純なテキストファイルで保存してください。
4Dデータの作成
データファイルができたら、4Dデータを作成する処理をフォームのLoadイベントハンドラに作成します。
等高線データは、グラフに使用するデータと同じ配列を用意します。値は適当に設定します。そして、その配列をContourDataプロパティに設定します。
あとは、IsZonedプロパティをTrueにして等高線データを有効にし、NumLevelsプロパティで色数を設定します。例えば、このプロパティの値が「3」だと等高線は3段階に設定され、チャートは3色で塗りつぶされます。
ColorSetプロパティには等高線のカラーセットを指定します。値はColorSetEnum列挙体のメンバで、以下の値が使用できます。ここでは、「Rainbow(スペクトラムカラー)」を使用しています。
メンバ | 解説 |
---|---|
BlackRedYellow | 黒⇒赤⇒黄の色順序 |
BlackWhite | グレースケールカラー |
BluePink | 青からピンクまでの色 |
BlueWhiteRed | 青⇒白⇒赤の色順序 |
Custom | カスタムカラーのセット |
GreenBlue | 緑から青までの色 |
GreenPurpleYellow | 緑⇒紫⇒黄の色順序 |
Rainbow | スペクトラムカラー |
RedWhite | 赤から白までの色 |
RevRainbow | 逆順のスペクトラムカラー |
WhiteBlack | 逆順のグレースケールカラー |
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load '4次元表示の設定 Dim contour(6, 10) As Double Dim i, j As Integer For i = 0 To 6 For j = 0 To 10 contour(i, j) = i * j Next j Next i C1Chart3D1.ChartGroups(0).ChartData.ContourData = contour 'グラフの領域区分を設定 C1Chart3D1.ChartGroups(0).Contour.IsZoned = True C1Chart3D1.ChartGroups(0).Contour.NumLevels = 20 C1Chart3D1.ChartGroups.ContourStyles.ColorSet = C1.Win.C1Chart3D.ColorSetEnum.RevRainbow End Sub
private void c1Chart3D1_Load(object sender, EventArgs e) { //4次元表示の設定 double[,] contour = new double[7, 11]; int i, j; for(i=0;i<6;i++) { for(j=0;j<10;j++) { contour[i, j] = i * j; } } c1Chart3D1.ChartGroups[0].ChartData.ContourData = contour;; //グラフの領域区分を設定 c1Chart3D1.ChartGroups[0].Contour.IsZoned = true; c1Chart3D1.ChartGroups[0].Contour.NumLevels = 20; c1Chart3D1.ChartGroups.ContourStyles.ColorSet = C1.Win.C1Chart3D.ColorSetEnum.RevRainbow; }
ファイルを読み込む処理の作成
最後に、ファイルを読み込む処理を作成します。データファイルをC1Chart3Dコントロールに設定するには、LoadDataFromFileメソッドを使用します。
処理は簡単で、「ファイルを開く」ダイアログボックスを表示し、取得したファイル名をLoadDataFromFileメソッドの引数に設定し、メソッドを実行するだけです。
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click OpenFileDialog1.DefaultExt = "*.dat" OpenFileDialog1.FileName = "mydata.dat" If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then Dim fname As String = OpenFileDialog1.FileName C1Chart3D1.ChartGroups(0).ChartData.LoadDataFromFile(fname) End If End Sub
private void button1_Click(object sender, EventArgs e) { openFileDialog1.DefaultExt = "*.dat"; if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { String fname = openFileDialog1.FileName; c1Chart3D1.ChartGroups[0].ChartData.LoadDataFromFile(fname); } }
まとめ
C1Chart3Dコントロールは、本来は3Dグラフを作成するコントロールですが、このように等高線データを加えると、さらに見やすいグラフの作成が可能です。どちらかというと工業系のデータ解析に使われやすいですが、経理や営業のデータでも色要素を加えることで、データの特徴を強調できます。