8.一つのChart 内でグラフを上下に2個並べて表示(16_Cht_05) (旧、SampleNo.424) |
1.一つのChart 内でグラフを上下に2個並べて表示 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :System.Windows.Forms.DataVisualization.Charting 参照設定:追加なし その他 :使用データ(kion.csv)は、次よりダウンロードして使って下さい。 chartdat.zip(各サンプル共通) :このサンプルを使用される前に、左のメニューの基本的な使い方とワンポイントテクニック集をご覧になって下さい。 このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.一つのChart 内でグラフを上下に2個並べて表示 |
'チャート関係の名前空間です。 Imports System.Windows.Forms.DataVisualization.Charting Public Class Form1 #Region "本文関係の処理(Button_Click イベントの処理等)" Private Sub ChartShow() Dim ds As New DataSet Dim colums As Integer Using cn As New System.Data.OleDb.OleDbConnection 'Dim csvFileName As String = "【2015年01月15日10時00現在の全国各地の気温】.csv" Dim csvFileName As String = "kion.csv" Dim dirPath As String = "..\..\..\data\" cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dirPath & _ ";Extended Properties=""Text;HDR=YES;IMEX=1;FMT=Delimited""" Using da As System.Data.OleDb.OleDbDataAdapter = _ New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM " & csvFileName, cn) da.Fill(ds, "Table1") Chart1.DataSource = ds 'Chart に表示するデータソースを設定 colums = ds.Tables(0).Columns.Count - 1 'データの系列数を取得 End Using End Using With Chart1 .Titles.Clear() 'タイトルの初期化 .Series.Clear() '系列(データ関係)の初期化 .ChartAreas.Clear() '軸メモリ・3D 表示関係の初期化 .ChartAreas.Add("ChartArea1") End With 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 '------------- ここまでは、基本的な表示設定と同じ ----------------------------------------- '■--------------------- 複数のチャート領域の設定 ------------------Start--■ '上側に表示するグラフの設定 .Series(0)("DrawingStyle") = "Cylinder" .Series(1)("DrawingStyle") = "Cylinder" .ChartAreas(0).AxisX.LabelStyle.Interval = 1 'ラベルテキストの表示間隔 .ChartAreas(0).AxisX.MajorGrid.Interval = 1 'ラベルの区切り線の表示間隔 .ChartAreas(0).AxisX.MajorGrid.IntervalOffset = 0.5 'X軸にマージンを表示しない場合(グラフの最初のデータまでの左の余白) ' Chart1.ChartAreas(0).AxisX.IsMarginVisible = False ' FontSize をグラフのサイズに合せて設定し、Chart1_Resize イベント再描画 '(こうしないと縦書きでグラフのサイズに合せて描画できないので) Dim FontSize As Single = Chart1.Width / 90.0! '8.6333 .ChartAreas(0).AxisX.LabelStyle.Font = New Font("MS P明朝", FontSize - 3) ' 下記と比べて見て下さい。 '.ChartAreas(0).AxisX.LabelStyle.Font = New Font("MS P明朝", 6) '県名を縦書きで表示する為に '下側に表示するグラフの設定 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" '別領域に表示 .Series(2).MarkerImage = "..\..\..\data_pic\Marker.gif" '逆三角形のマーカーがないので作成した物を .Series(3).MarkerStyle = MarkerStyle.Triangle '三角形のマーカー .Series(3).MarkerSize = 9 'マーカーのサイズを変更 .Series(3).Color = Color.HotPink .ChartAreas(1).AxisX.LabelStyle.Interval = 1 .ChartAreas(1).AxisX.LabelStyle.Font = New Font("MS P明朝", FontSize - 3) 'X軸にマージンを表示しない場合(グラフの最初のデータまでの左の余白) Chart1.ChartAreas(1).AxisX.IsMarginVisible = True '■---------------------------------------------- --------------------End--■ End With Exit Sub '☆★☆★☆★☆★☆★☆★☆★☆★ ここからは、グラフの装飾の部分です ☆★☆★☆★☆★☆★☆★☆★☆★ End Sub Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles Me.Resize Try Call ChartShow() 'フォントサイズを変更するために書き直し Catch ex As Exception End Try End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Call ChartShow() End Sub End Class 図1.上記実行結果に装飾の部分を追加 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
1.複数のチャート領域(上下に2個)の設定 2.上側に表示するグラフ(系列・グラフの種類等)の設定 3.下側に表示するグラフ(系列・グラフの種類等)の設定 |