タイトル : Re^5: スクロールに合わせY軸の目盛りに 投稿日 : 2014/02/16(Sun) 13:15 投稿者 : VBレスキュー(花ちゃん)
> しかも最高値と最低値の幅も広いので、その表示箇所に合わせたY軸目盛りにしないと、 > 変動幅の少ない箇所では、ほぼ横一直線になってしまってグラフの意味を成しません。 目盛りにをスクロール表示したのではだめなら下記のグラフに http://hanatyan.sakura.ne.jp/vb2005/vb2013chart07.htm 目盛りのスクロールの設定部分を下記のコードに差し替えて見て下さい。 (実際のデータがどのようなものか解らないので全国の気温データで試しております) 横スクロールバーの表示設定の下記の部分を変更 .Position = spos ' スクロールバーの初期位置 追加 '-------------- スクロールに合わせてメモリの最大値と最小値を変更 ------------- '現在表示されているデータの最大値と最小値を求める Dim d1() As Double = Nothing Dim Ncount As Integer = -1 For i As Integer = CInt(spos) To CInt(spos + sv.Size - 1) ' sv.Size For J As Integer = 1 To colums Ncount += 1 ReDim Preserve d1(Ncount) d1(Ncount) = CDbl(ds.Tables(0).Rows(i).Item(J)) Next Next Dim dMax As Double = 0 Dim dMin As Double = 0 dMax = 5 * (CInt(CLng(d1.Max) \ 5) + 1) '目盛りの最大値を求める '目盛りの最小値を求める If d1.Min >= 0 Then dMin = 0 '最小値を 0 にしたい場合 Else dMin = d1.Min '目盛りの最大値をデータの最大値 + 5(データに合わせて)に設定 dMin = 5 * (CInt(CLng(d1.Min) \ 5) - 1) End If With Chart1.ChartAreas(0).AxisY .Maximum = dMax '目盛りの最大値 .Minimum = dMin '目盛りの最小値 .Interval = 2 'メモリ間隔 End With '------------------------------------------------------------------------------- それと下記も追加して下さい。 Private spos As Double = 0 Private Sub Chart1_Paint(sender As Object, e As PaintEventArgs) Handles Chart1.Paint 'スクロールの位置を求める Dim sv As AxisScaleView = Chart1.ChartAreas(0).AxisX.ScaleView spos = sv.Position If Double.IsNaN(spos) Then spos = 0 End If Button1.PerformClick() End Sub これで動作確認してからご自分のグラフに移植してみて下さい。 |