スキップしてメイン コンテンツへ

 none
Chartについて RRS feed

  • 全般的な情報交換

  • 下記のように、Chartコントロールにグラフを表示させましたが、図のように偶数行にしか項目名が表示されません。項目名が5,6個(少ない数)でしたらすべて表示されるのですが項目数が多くなると間引きされる感じです。すべての項目を表示させ、一番下の横線も表示させたいので宜しくお願いいたします。

    Option Strict On
    Public Class Form1
        Private Sub SetChart()
            'データテーブルの作成
            Dim dt As New DataTable
            Dim dr As DataRow
            '表の1行目の項目名とデータのタイプを設定
            dt.Columns.Add(New DataColumn("氏名", GetType(String)))
            dt.Columns.Add(New DataColumn("得点", GetType(Integer)))
            dr = dt.NewRow
            dr(0) = "A君"
            dr(1) = 90
            dt.Rows.Add(dr)
            dr = dt.NewRow
            dr(0) = "B君"
            dr(1) = 80
            dt.Rows.Add(dr)
            dr = dt.NewRow
            dr(0) = "Cさん"
            dr(1) = 50
            dt.Rows.Add(dr)
            dr = dt.NewRow
            dr(0) = "D君"
            dr(1) = 70
            dt.Rows.Add(dr)
            dr = dt.NewRow
            dr(0) = "Eさん"
            dr(1) = 100
            dt.Rows.Add(dr)
            dr = dt.NewRow
            dr(0) = "Fさん"
            dr(1) = 80
            dt.Rows.Add(dr)
            dr = dt.NewRow
            dr(0) = "G君"
            dr(1) = 90
            dt.Rows.Add(dr)
            dr = dt.NewRow
            dr(0) = "Hさん"
            dr(1) = 60
            dt.Rows.Add(dr)
            dr = dt.NewRow
            dr(0) = "I君"
            dr(1) = 40
            dt.Rows.Add(dr)
            dr = dt.NewRow
            dr(0) = "J君"
            dr(1) = 80
            dt.Rows.Add(dr)
            dr = dt.NewRow
            dr(0) = "Kさん"
            dr(1) = 50
            dt.Rows.Add(dr)
            dr = dt.NewRow
            dr(0) = "Lさん"
            dr(1) = 70
            dt.Rows.Add(dr)
    
            With Chart1
                .Series.Clear()
                'データバインド
                .DataSource = dt
    
                '系列追加
                Dim cName As String = dt.Columns(1).ColumnName
                'Console.WriteLine(cName)
                .Series.Add(cName)
                'Console.WriteLine(.Series)
                .Series(cName).ChartType = DataVisualization.Charting.SeriesChartType.Bar
                .Series(cName).XValueMember = dt.Columns(0).ColumnName
                .Series(cName).YValueMembers = cName
                .Series(cName).Color = Color.Aqua
                .Series(cName).BorderColor = Color.Blue
                .Series(cName).BorderWidth = 1
    
                'X軸の起点を上にする(チャートタイプがBarのとき、X軸は縦軸)
                .ChartAreas(0).AxisX.IsReversed = True
                .ChartAreas(0).AxisX.LabelStyle.Font = New Font("メイリオ", 8)
                'Y軸の最大値(チャートタイプがBarのとき、Y軸は横軸)
                .ChartAreas(0).AxisY.Maximum = 100
                .ChartAreas(0).AxisY.Interval = 20
            End With
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            SetChart()
        End Sub
    End Class
    

    • 種類を変更済み nebokken 2019年10月30日 1:01
    2019年10月29日 2:04

すべての返信

  • Visual Basic for Application(VBA) のフォーラムに投稿してますが VBA ではなくて VB.NET アプリでは?
    2019年10月29日 2:16
  • 間違えました。申し訳ありません。
    2019年10月29日 2:25
  • .ChartAreas(0).AxisX.Interval = 1
    2019年10月29日 2:53
  • フォーラム違いを指摘され、あれこれしているうちにHongliangさんからの解答があり、試してみると目的が達成されました。Hongliangさん、ありがとうございました。
    2019年10月29日 3:37
  • Chart のサンプルはお持ちですか?

    すでに持っていて内容を熟知しているなら以下はスルーしてください。

    持っていなければ MSDN のサイトからサンプルを入手できるので、ダウンロードして動くように設定することをお勧めします。



    解説が英語であるのを厭わなければこのサンプルは今後の開発に非常に有益なものになると思います。

    このスレッドの質問者さんの問題がサンプルを見ると解決するかどうかは分かりませんが、解決のためのヒントはあるかもしれません(上の画像のサンプルのように)。

    解決できなくとも、今後の開発に役立つはずですので、ダウンロードして設定する手間をかけても損はないと思います。

    サンプルの入手先や設定手順は以下の記事にありますので、興味があれば見てください。

    Chart Samples
    http://surferonwww.info/BlogEngine/post/2016/02/14/chart-samples.aspx
    2019年10月29日 3:44
  • SurferOnWwwさん、丁寧なご説明ありがとうございます。Chartを学ぶ上で参考にしていたのがhanachanでした、ご紹介されたwebも見てみます。
    2019年10月29日 4:02
  • Microsoft の管理者の方へ>

    Visual Basic for Application(VBA) のフォーラムを選んだのは間違いだそうですので、他の適切なフォーラム(Visual Basic?) への移動をお願いします。

    2019年10月29日 6:17