tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルChartのX軸に表示するフォーマットを指定
記事No11155
投稿日: 2013/09/11(Wed) 05:55
投稿者くう
いつもお世話になっております。
VB2010 Chartの使い方でお伺いします。

現在下記のコードでグラフを2種類表示しています。

上段に降水量を、下段に傘の有無を表示させ、それぞれのX軸にyyyy/MM/dd HH:mmの
フォーマットで表示させたいのですが、ChartAreas(0)は正しく表示されますが
ChartAreas(1)のX軸にyyyy/MM/dd HH:mmと表示されて困っています。

正しく表示させるにはどうしたらよろしいでしょうか。
よろしくお願いします。


       Dim dt As New DataTable
        Dim row As DataRow

        '列設定
        dt.Columns.Add("", GetType(DateTime))
        dt.Columns.Add("降水量")
        dt.Columns.Add("傘を持参した回数")
        dt.Columns.Add("傘を忘れた回数")
        '行追加
        For i = 0 To k - 1

            row = dt.NewRow

            row(0) = Format$(DateTime.Parse(data_all(i, 1)), "yyyy/MM/dd HH:mm") 
            row(1) = data_all(i, 6)
            row(2) = data_all(i, 7)
            row(3) = data_all(i, 8)
            dt.Rows.Add(row)
        Next

        With Chart1

            .DataSource = dt

            '系列追加
            For i = 1 To dt.Columns.Count - 1
                Dim columnName As String = dt.Columns(i).ColumnName    
                '系列の設定
                .Series.Add(columnName)
                'X 軸のラベルテキストの読込・設定
                .Series(columnName).XValueMember = dt.Columns(0).ColumnName
                'Y軸のラベルテキストの読込・設定
                .Series(columnName).YValueMembers = columnName

            Next
            .ChartAreas(1).AlignWithChartArea = .ChartAreas(0).AlignWithChartArea


            .Series(0).ChartArea = "ChartArea1"
            '別領域に表示
            .Series(1).ChartArea = "ChartArea2"
            .Series(2).ChartArea = "ChartArea2"

            .ChartAreas(0).AxisX.LabelStyle.Format = "yyyy/MM/dd HH:mm"
            .ChartAreas(1).AxisX.LabelStyle.Format = "yyyy/MM/dd HH:mm"

     
            .ChartAreas(0).AxisY.Title = "降水量 [mL]"
            .ChartAreas(1).AxisY.Title = "傘の有無"
              

                '折れ線グラフに設定
                .Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Line
                '棒グラフに設定
                .Series(1).ChartType = DataVisualization.Charting.SeriesChartType.Column
                .Series(2).ChartType = DataVisualization.Charting.SeriesChartType.Column

                '棒グラフに設定
                .Series(1).ChartType = DataVisualization.Charting.SeriesChartType.Column
                .Series(2).ChartType = DataVisualization.Charting.SeriesChartType.Column

                'マーカーの種類
                .Series(0).MarkerStyle = MarkerStyle.None
                .Series(1).MarkerStyle = MarkerStyle.None
                .Series(2).MarkerStyle = MarkerStyle.None

                .Series(1)("PointWidth") = "0.2"
                .Series(2)("PointWidth") = "0.2"

                'グラフの色
                .Series(0).Color = Color.DodgerBlue
                .Series(1).Color = Color.Green
                .Series(2).Color = Color.FromArgb(100, Color.Orange)

                '透過色設定
                For Each ser As Series In .Series
                    ser.Color = Color.FromArgb(150, ser.Color.R, ser.Color.G, ser.Color.B)
                    ser.MarkerBorderColor = ser.Color
                    ser.MarkerColor = Color.White
                Next

        End With

[ツリー表示へ]
タイトルRe: ChartのX軸に表示するフォーマットを指定
記事No11156
投稿日: 2013/09/11(Wed) 10:53
投稿者Hongliang
Series::XValueTypeは既定ではAutoですが、その場合2つ目以降のChartAreaにおいてはdoubleとして認識されてしまうようです。
(AxisX.LabelStyle.Formatを設定しないと分かります)
明示的にSeries::XValueTypeをXValueType.DateTimeに設定すると、いずれのChartAreaにおいてもDateTimeとして扱われます。

[ツリー表示へ]
タイトルRe^2: ChartのX軸に表示するフォーマットを指定
記事No11157
投稿日: 2013/09/12(Thu) 09:54
投稿者くう
> Series::XValueTypeは既定ではAutoですが、その場合2つ目以降のChartAreaにおいてはdoubleとして認識されてしまうようです。
> (AxisX.LabelStyle.Formatを設定しないと分かります)
> 明示的にSeries::XValueTypeをXValueType.DateTimeに設定すると、いずれのChartAreaにおいてもDateTimeとして扱われます。

お返事ありがとうございます。
無事に表示することができました。

[ツリー表示へ]