tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルChartの選択範囲を連動させるには
記事No11158
投稿日: 2013/09/13(Fri) 02:13
投稿者くう
また解らないことがあったので、質問させていただきます。
(VB2010 Chartの使い方)

現在下記のコードでグラフを2種類表示しています。

上段に降水量を、下段に傘の有無を表示させています。

グラフには、スクロールバーを設定し、上段または下段のスクロールバーを
動かした量により、グラフの縮尺が変わる様に連動させています。

マウス操作にて、グラフの拡大したい部分を(X軸方向)左クリックを押しながら
カーソルを移動させ、範囲選択するとき、選択される範囲が上段と下段のグラフを
連動させる様に表示させるには、どうしたらよろしいでしょうか。全く見当がつきません。

ご教授願います。


Dim dt As New DataTable
        Dim row As DataRow

        '列設定
        dt.Columns.Add("", GetType(DateTime))
        dt.Columns.Add("降水量")
        dt.Columns.Add("傘を持参した回数")
        dt.Columns.Add("傘を忘れた回数")

        '行追加
        For i = 0 To k - 1

            row = dt.NewRow

            row(0) = Format$(DateTime.Parse(data_all(i, 1)), "yyyy/MM/dd HH:mm") 
            row(1) = data_all(i, 6)
            row(2) = data_all(i, 7)
            row(3) = data_all(i, 8)
            dt.Rows.Add(row)
        Next

        '回数の最大値を取得    
        Dim Y_max1 As Integer = Val((dt.Compute("MAX(傘を持参した回数)", "")))
        Dim Y_max2 As Integer = Val((dt.Compute("傘を忘れた回数)", "")))
        Dim Y_max As Integer

        If Y_max1 < Y_max2 Then
           Y_max = Y_max2
        Else
            Y_max = Y_max1
        End If


        With Chart1
           '.ChartAreas(1)の位置をY軸の最大値によってそれぞれ指定
                    If Y_max >= 8000 Then
                        .ChartAreas(1).Position.X = 1.8
                        .ChartAreas(1).Position.Width = 76.76376

                    ElseIf Y_max >= 800 Then
                        .ChartAreas(1).Position.X = 3
                        .ChartAreas(1).Position.Width = 75.56376

                    ElseIf Y_max >= 80 Then
                        .ChartAreas(1).Position.X = 3.9
                        .ChartAreas(1).Position.Width = 74.66376

                    ElseIf Y_max <= 10 Then
                        .ChartAreas(1).Position.X = 4.9
                        .ChartAreas(1).Position.Width = 73.66376

                        .ChartAreas(0).AxisX.ScrollBar.Enabled = False
                        .ChartAreas(1).AxisX.ScrollBar.Enabled = False
                        .ChartAreas(0).CursorX.IsUserSelectionEnabled = False
                        .ChartAreas(1).CursorX.IsUserSelectionEnabled = False
                        .ChartAreas(0).CursorX.IsUserEnabled = False
                        .ChartAreas(1).CursorX.IsUserEnabled = False
                      
                        .ChartAreas(1).AxisY.Maximum = 10
                        .ChartAreas(1).AxisY.Interval = 2
            
                    End If


            'データバインド
            .DataSource = dt

            '系列追加
            For i = 1 To dt.Columns.Count - 1
                Dim columnName As String = dt.Columns(i).ColumnName    
                '系列の設定
                .Series.Add(columnName)
                'X 軸のラベルテキストの読込・設定
                .Series(columnName).XValueMember = dt.Columns(0).ColumnName
                'Y軸のラベルテキストの読込・設定
                .Series(columnName).YValueMembers = columnName
            Next
            

            'X軸をDatetimeの型へ
            .Series(0).XValueType = ChartValueType.DateTime
            .Series(1).XValueType = ChartValueType.DateTime
            .Series(2).XValueType = ChartValueType.DateTime

            'X軸ラベルのフォーマットを指定
            .ChartAreas(0).AxisX.LabelStyle.Format = "yyyy/MM/dd HH:mm"
            .ChartAreas(1).AxisX.LabelStyle.Format = "yyyy/MM/dd HH:mm"

            'Chartを表示する領域を指定
            .Series(0).ChartArea = "ChartArea1"
            '別領域に表示
            .Series(1).ChartArea = "ChartArea2"
            .Series(2).ChartArea = "ChartArea2"
          
  

     
            .ChartAreas(0).AxisY.Title = "降水量 [mL]"
            .ChartAreas(1).AxisY.Title = "傘の有無"
              

                '折れ線グラフに設定
                .Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Line
                '棒グラフに設定
                .Series(1).ChartType = DataVisualization.Charting.SeriesChartType.Column
                .Series(2).ChartType = DataVisualization.Charting.SeriesChartType.Column

                '棒グラフに設定
                .Series(1).ChartType = DataVisualization.Charting.SeriesChartType.Column
                .Series(2).ChartType = DataVisualization.Charting.SeriesChartType.Column

                'マーカーの種類
                .Series(0).MarkerStyle = MarkerStyle.None
                .Series(1).MarkerStyle = MarkerStyle.None
                .Series(2).MarkerStyle = MarkerStyle.None

                .Series(1)("PointWidth") = "0.2"
                .Series(2)("PointWidth") = "0.2"

                'グラフの色
                .Series(0).Color = Color.DodgerBlue
                .Series(1).Color = Color.Green
                .Series(2).Color = Color.FromArgb(100, Color.Orange)

                '透過色設定
                For Each ser As Series In .Series
                    ser.Color = Color.FromArgb(150, ser.Color.R, ser.Color.G, ser.Color.B)
                    ser.MarkerBorderColor = ser.Color
                    ser.MarkerColor = Color.White
                Next


                                    'スクロールの設定
                    .ChartAreas(0).CursorX.IsUserSelectionEnabled = True
                    .ChartAreas(1).CursorX.IsUserSelectionEnabled = True

                    .ChartAreas(0).CursorX.IsUserEnabled = True
                    .ChartAreas(1).CursorX.IsUserEnabled = True

                    .ChartAreas(0).CursorX.IntervalOffsetType = DateTimeIntervalType.Hours
                    .ChartAreas(0).CursorX.IntervalType = DateTimeIntervalType.Hours
           .ChartAreas(1).CursorX.IntervalOffsetType = DateTimeIntervalType.Hours
                    .ChartAreas(1).CursorX.IntervalType = DateTimeIntervalType.Hours

                    'スクロール量を連動
                    .ChartAreas(1).AxisX.ScaleView = .ChartAreas(0).AxisX.ScaleView
                    .ChartAreas(0).AxisX.ScaleView = .ChartAreas(1).AxisX.ScaleView
        End With

[ツリー表示へ]
タイトルRe: Chartの選択範囲を連動させるには[自己解決]
記事No11159
投稿日: 2013/09/17(Tue) 23:31
投稿者くう
解決できました。

お騒がせしました。

[ツリー表示へ]