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

タイトル Re^6: ChartのX軸の日付や時刻の表示を任意に指定。
投稿日: 2016/08/12(Fri) 16:20
投稿者toshi
有り難うございます。 

動作確認しましたが、
・日付をDateではなく、"07/31" などとStringで扱いたいです。
・Dim day0 = #7/15/2016# などとすると 1、10、20 にはなりませんでした。
 日付でスクロールもしてますのでそれに合わせ Minimum、Maximum値ともに変更となります。

頓珍漢なこと言ってると思いますがよろしくお願いします。

    Private _tbl As DataTable

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        _tbl = New DataTable()
        With _tbl.Columns
            .Add("x", GetType(String))
            .Add("y", GetType(Integer))
        End With

        Dim day0 = #7/15/2016#    ' #7/31/2016#

        Dim rnd As New Random()
        For Each dy In Enumerable.Range(1, 100)
            _tbl.Rows.Add(day0.AddDays(dy), rnd.Next(0, 20))
        Next
        Chart1.DataSource = _tbl

        With Chart1.Series(0)
            .ChartType = DataVisualization.Charting.SeriesChartType.Line
            .XAxisType = DataVisualization.Charting.AxisType.Primary
            .XValueType = DataVisualization.Charting.ChartValueType.Date
            .XValueMember = "x"
            .YValueMembers = "y"
            .IsXValueIndexed = True
        End With

        Dim labelWidth = 3  '--- ラベル幅の半分程度
        With Chart1.ChartAreas(0).AxisX
            Dim dylbl = day0.AddDays(1)
            Dim EndDy = day0.AddDays(100)
            Do While dylbl <= EndDy
                For Each dy In {1, 10, 20}
                    Dim dy2 = dylbl.AddDays(dy - 1)
                    Dim idx = dy2.Subtract(day0).Days
                    With .CustomLabels.Add(idx - labelWidth, idx + labelWidth, dy2.ToString("M/d"))
                        .GridTicks = DataVisualization.Charting.GridTickTypes.All
                    End With
                Next
                dylbl = dylbl.AddMonths(1)
            Loop
        End With
    End Sub

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

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