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

タイトル 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

これで動作確認してからご自分のグラフに移植してみて下さい。

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

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