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