C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■86469 / )  Re[1]: ChartのX軸のタイトル表示
□投稿者/ mako (10回)-(2018/01/31(Wed) 17:00:32)
お世話になっています。

今、使ってるプログラムは下記のようなものですが実際のはもっと複雑ですので、あまり大きく変えたくないとこもあります。
それプラス、我流ですが1分間隔のサンプルデータも作ってみました。
よろしくお願いします。


表示時刻の切り替えは、 RadioButton等 でしチャートを再表示しています。
チャートによっては9:00・11:00と言った時間単位もありますし、別のデータにはなりますが日にちの場合もあります。

サンプルデータでの時刻表示は、
 15分間隔場合は  8:15・8:30・8:45・10:30・10:45 と 起点の8:10と10:20
 30分間隔場合は  8:30 10:30 と 起点の8:10と10:20 
 60分間隔場合は  起点の8:10と10:20のみ
 9:00・11:0などと言った時間単位の場合は、起点の8:10と10:20のみ
となります。

もし可能でしたら見易くするために、起点の8:10と10:20の左側に棒グラフ2〜3本くらいの空白も。


    Private Structure datF
        Dim Jikoku As String      '時刻 (実際は "2018/01/30 16:30:00" などの日付も入った文字列)
        Dim Suu1 As Integer       '数量1
        Dim Suu2 As Integer       '数量2
    End Structure
    Dim Uridat(500) As datF
    Dim datS As Integer            'データ数

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' 1分間隔のサンプルデータをを成
        datS = -1
        For i = 10 To 45    ' 8:10〜8:45
            datS = datS + 1
            Uridat(datS).Jikoku = "8:" & Str(i)  '時刻
            Uridat(datS).Suu1 = i * 10           '数量1
            Uridat(datS).Suu2 = i * 5            '数量2
        Next
        For i = 20 To 55        ' 10:20〜10:55
            datS = datS + 1
            Uridat(datS).Jikoku = "10:" & Str(i)   '時刻
            Uridat(datS).Suu1 = i + 100            '数量1
            Uridat(datS).Suu2 = i + 20             '数量2
        Next

        '====   Chart1   ====
        Dim ds As New DataSet
        Dim dt As New DataTable
        Dim dtRow As DataRow

        '列の作成
        With dt.Columns
            .Add("時刻", GetType(String))
            .Add("数量1", GetType(Integer))
            .Add("数量2", GetType(Integer))
        End With
        ds.Tables.Add(dt)

        'データのセット
        For i = 0 To datS
            dtRow = ds.Tables(0).NewRow
            dtRow(0) = Uridat(i).Jikoku    '時刻
            dtRow(1) = Uridat(i).Suu1      '数量1
            dtRow(2) = Uridat(i).Suu2      '数量2
            ds.Tables(0).Rows.Add(dtRow)
        Next

        'Chart に表示するデータソースを設定
        Chart1.DataSource = ds
        Chart1.Series.Clear()
        '
        Dim ore = Chart1.Series.Add("折れ線")
        With ore
            .ChartType = DataVisualization.Charting.SeriesChartType.Line
            .XValueMember = "時刻"
            .YValueMembers = "数量1"
        End With

        Dim bou = Chart1.Series.Add("棒グラフ")
        With bou
            .ChartType = DataVisualization.Charting.SeriesChartType.Column
            '.XValueMember = "時刻"
            .YValueMembers = "数量2"
        End With
    End Sub


返信 編集キー/


管理者用

- Child Tree -