タイトル : Chartの選択範囲を連動させるには 投稿日 : 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 |