3.Chart コントロールで行と列を入れ替えて表示(16_Cht_01) (旧、SampleNo.362) |
1.Chart コントロールで行と列を入れ替えて表示 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 参照設定:追加なし その他 :使用データ(Chart.csv)は、次よりダウンロードして使って下さい。 chartdat.zip(各サンプル共通) :このサンプルを使用される前に、左のメニューの基本的な使い方とワンポイントテクニック集をご覧になって下さい。 このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.Chart コントロールで行と列を入れ替えて表示 |
VB6.0 の MSChart コントロールのような簡単な方法があるのかなと思って探したのですが、見つからなかったの作ってみました。 'チャート関係の名前空間です。 Imports System.Windows.Forms.DataVisualization.Charting Public Class Form1 #Region "行と列を入れ替えて表示" Private frgColRow As Boolean Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Chart1.Series.Clear() Dim ds1 As New DataSet Using cn As New System.Data.OleDb.OleDbConnection Dim FolderPath As String = "..\..\..\data\" Dim csvFileName As String = "Chart.csv" cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FolderPath & _ ";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(ds1, "Table1") Chart1.DataSource = ds1 End Using End Using frgColRow = Not frgColRow If frgColRow Then For i As Integer = 1 To ds1.Tables(0).Columns.Count - 1 Dim columnName As String = ds1.Tables(0).Columns(i).ColumnName.ToString() Chart1.Series.Add(columnName) Chart1.Series(columnName).ChartType = DataVisualization.Charting.SeriesChartType.Column Chart1.Series(columnName).XValueMember = ds1.Tables(0).Columns(0).ColumnName.ToString() Chart1.Series(columnName).YValueMembers = columnName Chart1.Series(columnName).Label = "#VALY" Next Else '行と列を入れ替えて読み込み表示 For i As Integer = 0 To ds1.Tables(0).Rows.Count - 1 '浅野・安室 等の氏名を系列名に設定 'Debug.Print(Chart1.Series(i).Name) Dim columnName As String = ds1.Tables(0).Rows(i).Item(0).ToString() Chart1.Series.Add(columnName) '系列毎にグラフの種類を設定 Chart1.Series(columnName).ChartType = SeriesChartType.Column For j As Integer = 1 To (ds1.Tables(0).Columns.Count) - 1 Dim YVal As String = CStr(ds1.Tables(0).Rows(i).Item(ds1.Tables(0).Columns(j).ColumnName)) '氏名毎に、科目名と点数を個別にコレクションの末尾に追加(浅野= 国語,69,数学, 81,英語,73) Chart1.Series(columnName).Points.AddXY(ds1.Tables(0).Columns(j).ColumnName, YVal) Chart1.Series(columnName).Label = "#VALY" Next j Next i End If End Sub #End Region End Class 図1.上記実行結果 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |