tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Chart繰返し表示で前表示をクリア
投稿日: 2012/07/24(Tue) 18:39
投稿者et
はじめまして。

開発環境:VB2010pro Win7    

初めて投稿させていただきます。
CSVファイルからチャートコントロールを利用して曲線グラフを表示します。
CSVファイルに1分毎に流量のデータを追加した後グラフを再表示したいのですが、
前回表示したデータに加えて二重、三重にグラフ表示するデータが増えていきます。
グラフ表示データをクリアして最新のデータだけ表示したいのですが、
どうしたら良いでしょうか初歩的な事ですが教えて頂けますでしょうか。
宜しくお願いします。

以下ソースです。
-------------------------------------------------------------------------------
    Private Sub ChartDataOpen(ByVal FolderPath As String, ByVal fileName As String)
        'CSV ファイルを読み込みChart に表示するデータソースを設定
        Using cn As New System.Data.OleDb.OleDbConnection
            Dim csvFileName As String = fileName
            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(ds, "Table1")
                Chart1.DataSource = ds                       'Chart に表示するデータソースを設定
                colums = ds.Tables(0).Columns.Count - 1      'データの系列数を取得
            End Using
        End Using
    End Sub

    Private Sub ChartClar(ByVal cht As Chart)
        'Chart の設定を初期値に戻す
        With cht
            .Titles.Clear()                  'タイトルの初期化
            .BackGradientStyle = GradientStyle.None '背景グラデーション
            .BackColor = Color.White         '背景色を白色に
            '外形をデフォルトに
            .BorderSkin.SkinStyle = BorderSkinStyle.None
            .Legends.Clear()                 '凡例の初期化
            '.Legends.Add("Legend1")
            .Series.Clear()                  '系列(データ関係)の初期化
            .ChartAreas.Clear()              '軸メモリ・3D 表示関係の初期化
            .ChartAreas.Add("ChartArea1")
            .Annotations.Clear()            'グラフの注釈
        End With
    End Sub

    Private Sub ChartDisplay(ByVal upper As Integer, ByVal lower As Integer)
        '設定を一旦初期値に戻す。
        Call ChartClar(Chart1)
        '起動フォルダーに入れて置いてください。
        Call ChartDataOpen(System.Windows.Forms.Application.StartupPath(), "GraphFile.csv")
        With Chart1
            For i As Integer = 1 To colums
                Dim columnName As String = ds.Tables(0).Columns(i).ColumnName.ToString()
                '系列の設定(水量)
                .Series.Add(columnName)
                'グラフの種類を曲線グラフに設定
                .Series(columnName).ChartType = DataVisualization.Charting.SeriesChartType.Spline  'Column
                'X 軸のラベルテキストの読込・設定(時間)
                .Series(columnName).XValueMember = ds.Tables(0).Columns(0).ColumnName.ToString()
                '.Series(columnName).XAxisType.Format
                'グラフ用のデータの読込・設定(水量)
                .Series(columnName).YValueMembers = columnName
            Next
        End With
        '--- Y軸 に関する設定 ---
        With Chart1.ChartAreas(0).AxisY
            '目盛りの設定
            .Maximum = upper    '流量の最大値
            .Minimum = lower    '流量の最小値
            'Y軸のタイトル関係の設定
            .Title = "流  量"
            .TitleAlignment = StringAlignment.Center        '中央に表示
            .TextOrientation = TextOrientation.Stacked      '縦書きで表示
        End With

    End Sub
-----------------------------------------------------------------------------
GraphFile.csv
時刻  流量
0:00    50
0:01    55
0:02    65
0:03    80
0:04    100
0:05    120
0:06    150
0:07    170
0:08    185
0:09    195
0:10    200
0:11    204
0:12    207
0:13    209
0:14    210
0:15    209
0:16    208
0:17    207
0:18    206
0:19    205
0:20    204
0:21    202
0:22    198
0:23    194
0:24    186
0:25    176
0:26    168
0:27    160
0:28    152
0:29    144
0:30    137
0:31    130
0:32    123
0:33    117
0:34    111
0:35    105
0:36    100
0:37    95
0:38    90
0:39    86
0:40    82
0:41    79
0:42    76
0:43    73
0:44    70
0:45    68
0:46    66
0:47    64
0:48    62
0:49    60
0:50    59
0:51    58
0:52    57
0:53    56
0:54    55
0:55    54
0:56    53
0:57    52
0:58    51
0:59    50

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。