Microsoft Chart Control でグラフを上下に並べて表示   (424)
使用コントロール Chart1 Button1
開発環境 WindowsVista VB2010(VS2010 Pro) Framework 4 / ターゲットCPU:X86
[Option Compare Text] [Option Explicit On] [Option Infer On] [Option Strict On]で設定
その他条件 Microsoft Chart Control が使用できる環境
使用データ(kion.csv)は、次よりダウンロードして使って下さい。 chartdat424.zip
下記サンプルは、必ず、CSVファイルを使っての基本的なグラフの表示 をご覧になってからお試しください。

Private Sub Button1_Click(ByVal sender As System.Object, _
             ByVal
 e As System.EventArgs) Handles Button1.Click
 
'※ データファイルは、kion.csv を使って読み込みファイル名も変更してください。

   Call ChartClar(Chart1)  '設定を一旦初期値に戻す。(通常は必要ありません。)
   With Chart1
      For i As Integer = 1 To colums
         'データベースから列名を読込(現在の気温・昨日同時刻の気温 等)
         Dim columnName As String = ds.Tables(0).Columns(i).ColumnName.ToString()
         '系列の設定(現在の気温・昨日同時刻の気温 等)
         .Series.Add(columnName)
         'X 軸のラベルテキストの読込・設定(都市・県名)
         .Series(columnName).XValueMember = ds.Tables(0).Columns(0).ColumnName.ToString()
         'グラフ用のデータの読込・設定(各温度)
         .Series(columnName).YValueMembers = columnName
      Next
'------------- ここまでは、基本的な表示設定と同じ -----------------------------------------

'SampleNo.380 と同じ事です。ついでに飾りを付け加えて表示して見ました。

      '■--------------------- 複数のチャート領域の設定 ------------------Start--■
      '上側に表示するグラフの設定
      .Series(0)("DrawingStyle") = "Cylinder"
      .Series(1)("DrawingStyle") = "Cylinder"
      .ChartAreas(0).AxisX.LabelStyle.Interval = 1
      .ChartAreas(0).AxisX.LabelStyle.Font = New Font("MS P明朝", 10) 
'県名を縦書きで表示する為に
   
'但し、グラフのサイズによりフォントサイズを変更する必要がある

      '下側に表示するグラフの設定
      Dim chartArea2 As New ChartArea()
      chartArea2.Name = "ChartArea2"   '領域名を設定
      .ChartAreas.Add(chartArea2)      '領域を追加
      '下側に表示するデータを前日の最低気温と前日の最高気温をPoint グラフで表示
      .Series(2).ChartType = SeriesChartType.Point    'Point グラフで表示
      .Series(3).ChartType = SeriesChartType.Point    'Point グラフで表示
      .Series(2).ChartArea = "ChartArea2"             '別領域に表示
      .Series(3).ChartArea = "ChartArea2"             '別領域に表示
   
'Marker.gif の替わりに適当な MarkerStyle を使ってください。
      .Series(2).MarkerImage = "Marker.gif"           '逆三角形のマーカーがないので作成した物を
      .Series(3).MarkerStyle = MarkerStyle.Triangle   '三角形のマーカー
      .Series(3).MarkerSize = 12                      'マーカーのサイズを変更
      .ChartAreas(1).AxisX.LabelStyle.Interval = 1
      .ChartAreas(1).AxisX.LabelStyle.Font = New Font("MS P明朝", 10)
      '■---------------------------------------------- --------------------End--■

'☆★☆★☆★☆★☆★☆★☆★☆★ ここからは、グラフの装飾の部分です ☆★☆★☆★☆★☆★☆★☆★☆★
   '今までのサンプルを参考にそれぞれの好みで設定してください。

      '■------------------- 凡例の設定 ----------------Start--■
       '★  省略
      '■-------------------------------------------------End----■

      '■------------------- Chartコントロールの外形を設定 ----------------Start--■

       '★  省略
      '■------------------------------------------------------------------End----■


      '■------------------- 背景をグラデーションで描画 ----------------Start--■
       '★  省略
      '■---------------------------------------------------------------End----■


      '■------------------ 系列のカラーを指定の色に設定 ---------------Start--■
       '★  省略
      '■---------------------------------------------------------------End----■

      '■------------------- タイトルを設定 ----------------Start--■
       '★  省略
      '■----------------------------------------------------End----■

      '■------------------- 横・スクロールバーを表示 ----------------Start--■
       '★  省略
      '■-------------------------------------------------------------End----■

   End With
End Sub

上記コードの実行結果


上図で、県名を縦書きで表示しておりますが、フォントの設定自体では、縦書きで表示する機能はありません、
回転表示等の設定はありますが向きが縦向きに表示されるだけで、.NET では通常縦書きフォントを使用できな
いので、フォントサイズを変更して縦書きに表示されるフォントサイズを指定する事で実現しています。従って、
LabelAutoFitMaxFontSizeのような設定も使用できません。
独自にグラフの横幅に合せたフォントサイズを設定する仕組みを作る必要があります。

元の気温データは、WeatherEye - お天気ポータルサイトの現在の気温ページの表示データを取得して、
CSVファイルに加工したものです。(SampleNo.400 参照 某サイトでの質問に答えて作ったものです。) 

私は、WEB 上からデータを取得して、上記のようにグラフにして表示するまでの一連の動作をするようにして使って
います、全国の気温が一覧でグラフで見比べれるので結構便利です。


2011/05/01

VBレスキュー(花ちゃん)
Visual Basic6.0  VB6.0
VB.NET2003/VB2005/VB2008/VB2010