tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルChartのX軸ラベルに日時を表示させたい
記事No10562
投稿日: 2011/07/15(Fri) 13:32
投稿者maru
お世話になります。VB初心者です。
環境はWinXP SP3、VB2010EX、NET Framework4.0です。
chartのX軸ラベルの表記に関しまして以下質問あります。
ご教示いただければ幸いです。

1.ChartのX軸ラベルに日付と時刻("yyyy/mm/dd hh:mm:ss")を表示させたい
 ・csvファイルをDatatable経由でDataGridViewにバインドしたデータにて、
  折れ線グラフを描画させているのですが、
  X軸項目(日時)とするデータが"yyyy/mm/dd hh:mm:ss"形式で存在するにも関わらず
  Chartで表示するとX軸のラベルが全て"yyyy/mm/dd"で表示されてしまいます。
  これをきちんと"yyyy/mm/dd hh:mm:ss"で表記させるにはどのようにすれば
  よいのでしょうか?

  ※1 DataGridViewには、日時項目に2011/07/15 10:00とだけ表示され、
     秒数は表示されません。
  ※2 XValueType = Time にしますと、X軸ラベルには時刻のみ(hh:mmまで)
     表示されます。  

  以下、ソースです。

    「csvファイルのデータ」
  日時(X軸項目)      数値1(系列1)  数値2(系列2)       
  2011/07/15 10:00:00    100         101
  2011/07/15 10:00:30     90         105
  2011/07/15 10:01:00    110         120
  2011/07/15 10:01:30    130         120
  2011/07/15 10:02:00    120          95

  Dim dtv As DataGridView = Me.DataGridView1

   'グラフ表示設定
    With Chart1
     .Series.Clear() '系列を初期化
      .DataSource = dtv.DataSource 'Chartに表示するデータソースを設定

      Dim colum As Integer = dtv.Columns.Count - 1   'データの系列数を取得

      For i As Integer = 1 To colum
       Dim columnName As String = dtv.Columns(i).Name.ToString()
         .Series.Add(columnName)'系列の設定
          'グラフの種類を設定
          .Series(columnName).ChartType = _
           DataVisualization.Charting.SeriesChartType.FastLine        
          'X 軸ラベルテキストの読込・設定
          .Series(columnName).XValueType = ChartValueType.DateTime
          .Series(columnName).XValueMember = dtv.Columns(0).Name

          'Y軸データの読込・設定
          .Series(columnName).YValueType = ChartValueType.Double
          .Series(columnName).YValueMembers = columnName
      Next

  

[ツリー表示へ]
タイトルRe: ChartのX軸ラベルに日時を表示させたい
記事No10563
投稿日: 2011/07/20(Wed) 12:30
投稿者shu
日付をフォーマットして文字列にしてはどうでしょう?

[ツリー表示へ]
タイトルRe^2: ChartのX軸ラベルに日時を表示させたい
記事No10565
投稿日: 2011/07/22(Fri) 11:29
投稿者maru
お返事が遅れてしまって申し訳ございませんでした。

> 日付をフォーマットして文字列にしてはどうでしょう?
私も最初はそのように考えて実行してみましたが、表示は"2011/07/15"でした。
以下がソースです(ただし、dtvの日付項目はもともと文字列式で定義してあります)。
  .Series(columnName).XValueType = ChartValueType.String
  .Series(columnName).XValueMember = dtv.Columns(0).Name

実際には、dtv.Columns(0).Nameには"時間"という文字列が入っており、
.XValueMemberに代入した場合、そのdtv.Columns(0).Nameという名前の列の
各行から、相当する値をXラベル行に代入されているようなのです。
ですので、日付をまたぐとX軸ラベルの表示はちゃんと"2011/07/15"から"2011/07/16"と
表記されます。

ちなみに、
  .Series(columnName).XValueType = ChartValueType.Time
と設定すると、表記は"10:00"、"11:00"、"12:00"などと時間のみ(秒数は表示されない)
表示されます。

[ツリー表示へ]
タイトルRe^3: ChartのX軸ラベルに日時を表示させたい
記事No10566
投稿日: 2011/07/22(Fri) 14:10
投稿者shu
>   .Series(columnName).XValueType = ChartValueType.String
>   .Series(columnName).XValueMember = dtv.Columns(0).Name

dtv.Columns(0)の型をStringにして日時をyyyy/MM/dd HH:mm:ssで
フォーマットした文字列を設定してないと駄目ですよ。

[ツリー表示へ]