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

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

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

ChartのX軸に日・時・分を指定し表示

[トピック内 25 記事 (1 - 20 表示)]  << 0 | 1 >>

■82964 / inTopicNo.1)  ChartのX軸に日・時・分を指定し表示
  
□投稿者/ KY (3回)-(2017/02/22(Wed) 19:11:36)

分類:[VB.NET/VB2005 以降] 

          :(中略)
2016/10/11 10:24:00,1690
2016/10/11 10:25:00,1680
          :(中略)
2016/10/12 15:58:00,1730
2016/10/12 15:59:00,1710
2016/10/12 16:00:00,1750
          :(中略)

などと言った日時と数値のデーターがあるとします。
このうちの日時をChartのX軸に表示したのですが、このまま自動で表示しますと中途半端な日・時・分で表示がされます。
これを例えば「15:00:00」、「15:15:00」、「15:30:00」、「15:45:00」、「16:00:00」などと15分単位、
或いは30分単位、1時間単位、2時間単位などとするにはどうすれば良いのでしょう?
よろしくお願いします。

引用返信 編集キー/
■82966 / inTopicNo.2)  Re[1]: ChartのX軸に日・時・分を指定し表示
□投稿者/ 大谷刑部 (12回)-(2017/02/23(Thu) 09:35:17)
No82964 (KY さん) に返信
> :(中略)
> 2016/10/11 10:24:00,1690
> 2016/10/11 10:25:00,1680
> :(中略)
> 2016/10/12 15:58:00,1730
> 2016/10/12 15:59:00,1710
> 2016/10/12 16:00:00,1750
> :(中略)
>
> などと言った日時と数値のデーターがあるとします。
> このうちの日時をChartのX軸に表示したのですが、このまま自動で表示しますと中途半端な日・時・分で表示がされます。
> これを例えば「15:00:00」、「15:15:00」、「15:30:00」、「15:45:00」、「16:00:00」などと15分単位、
> 或いは30分単位、1時間単位、2時間単位などとするにはどうすれば良いのでしょう?
> よろしくお願いします。

VB6やVBAでは日付型は内部値は1日を1としたDouble型ですが、
.Netでは「日付構造体」のようなので、ToOADateで一端Double型に変換してから、
(CDblとかCastでは変換できないようらしい、精度の高いDecimal型には変換すらできない)
15分とか30分を10進法に直した値に丸める関数をつくればいいのではないでしょうか?
ただし、Double型は内部は2進数なので、10進法でいう完ぺきな精度はおそらく不可能なので、
その点は承知の上実装が必要になります。
ToOADateでDouble型に変換の上、Decimalに変換するのはなおダメです。
2進→10進で精度のずれが確実に起こります。









引用返信 編集キー/
■82970 / inTopicNo.3)  Re[1]: ChartのX軸に日・時・分を指定し表示
□投稿者/ WebSurfer (1148回)-(2017/02/23(Thu) 12:45:19)
No82964 (KY さん) に返信

Chart のサンプルは持っているでしょうか?

持っているなら以下はスルーしてください。また、持っていないけど興味はないとか、ソースが C#
だから見る気がしないということがありましたら、やはりスルーしてください。


MSDN のサイトからサンプルを入手できるので、ダウンロードして動くように設定することをお勧め
します。解説が英語であるのを厭わなければこのサンプルは今後の開発に非常に有益なものになると
思います。

このスレッドの質問者さんの問題がサンプルを見ると解決するかどうかは分かりませんが、解決のた
めのヒントはあるかもしれません(Chart Features > Axes > Setting Axis Labels Interval・・・
とかに)。

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

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

Chart Samples
http://surferonwww.info/BlogEngine/post/2016/02/14/chart-samples.aspx
引用返信 編集キー/
■83003 / inTopicNo.4)  Re[2]: ChartのX軸に日・時・分を指定し表示
□投稿者/ KY (4回)-(2017/02/25(Sat) 20:07:39)
No82966 (大谷刑部 さん) に返信

> VB6やVBAでは日付型は内部値は1日を1としたDouble型ですが、
> .Netでは「日付構造体」のようなので、ToOADateで一端Double型に変換してから、
> (CDblとかCastでは変換できないようらしい、精度の高いDecimal型には変換すらできない)
> 15分とか30分を10進法に直した値に丸める関数をつくればいいのではないでしょうか?
> ただし、Double型は内部は2進数なので、10進法でいう完ぺきな精度はおそらく不可能なので、
> その点は承知の上実装が必要になります。
> ToOADateでDouble型に変換の上、Decimalに変換するのはなおダメです。
> 2進→10進で精度のずれが確実に起こります。
> 

折角教えて頂いたのですが、なにぶん初心者。
言われてることがよく分かってないのですが、自動で表示すると適当(正確には適当ではないのですが)に表示するのを0時0分0秒を起点にして、例えば5分間隔にしたい場合は下記のように。

          :(中略)
2016/10/11 10:24:00,1690 ----> データーの数値をグラフに表示 & X軸のタイトルには日時を非表示
2016/10/11 10:25:00,1680 ----> データーの数値をグラフに表示 & X軸のタイトルには日時を表示
          :(中略)
2016/10/12 15:58:00,1730 ----> データーの数値をグラフに表示 & X軸のタイトルには日時を非表示
2016/10/12 15:59:00,1710 ----> データーの数値をグラフに表示 & X軸のタイトルには日時を非表示
2016/10/12 16:00:00,1750 ----> データーの数値をグラフに表示 & X軸のタイトルには日時を表示
          :(中略)

引用返信 編集キー/
■83004 / inTopicNo.5)  Re[2]: ChartのX軸に日・時・分を指定し表示
□投稿者/ KY (5回)-(2017/02/25(Sat) 20:11:31)
No82970 (WebSurfer さん) に返信

> Chart のサンプルは持っているでしょうか?

サンプルは持っています。
具体的なお教えをお願いします。

引用返信 編集キー/
■83018 / inTopicNo.6)  Re[3]: ChartのX軸に日・時・分を指定し表示
□投稿者/ 大谷刑部 (14回)-(2017/02/27(Mon) 09:14:54)
No83003 (KY さん) に返信
> ■No82966 (大谷刑部 さん) に返信
>
>>VB6やVBAでは日付型は内部値は1日を1としたDouble型ですが、
>>.Netでは「日付構造体」のようなので、ToOADateで一端Double型に変換してから、
>>(CDblとかCastでは変換できないようらしい、精度の高いDecimal型には変換すらできない)
>>15分とか30分を10進法に直した値に丸める関数をつくればいいのではないでしょうか?
>>ただし、Double型は内部は2進数なので、10進法でいう完ぺきな精度はおそらく不可能なので、
>>その点は承知の上実装が必要になります。
>>ToOADateでDouble型に変換の上、Decimalに変換するのはなおダメです。
>>2進→10進で精度のずれが確実に起こります。
>>
>
> 折角教えて頂いたのですが、なにぶん初心者。

初心者だからというのは免罪符になりません。
どの辺がわからないかを記載していただかないと答えようがないです。
丸投げ質問で理解しようとしてないように取れます。

引用返信 編集キー/
■83343 / inTopicNo.7)  Re[3]: ChartのX軸に日・時・分を指定し表示
□投稿者/ KY (6回)-(2017/03/17(Fri) 20:49:06)
遅くなりましたがサンプル載せますのでよろしくお願いします。

このサンプルでもそうですが、X軸を自動で表示をしますとそのラベルも適当に表示がされてしまいます。
それをごく一般なグラフ(チャート)にもありますように、任意での間隔で・・、或いは指定した数値のみ、その位置に表示がされるようにならないものかと思っています。

何故なら例えば 144、164、184 などと中途半端な表示になると見にくいからです。

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim dat As DataTable = New DataTable
        With dat.Columns
            .Add("年月日時分", GetType(Integer))    ' X軸 <---- 実際は"2017/03/16 16:31"、"2017/03/16 16:32"、・・・ などの"年月日時分"です。 
            .Add("数量", GetType(Integer))          ' Y軸
        End With

        Dim cRandom As New System.Random()                     ' Random クラスの新しいインスタンスを生成する
        Dim iResult1 As Integer = cRandom.Next(13, 186)       ' 実際は"年月日時分"ですが分かり易く 13以上 186 未満の乱数を取得し開始を決めている
        For i = iResult1 To iResult1 + 50
            Dim iResult2 As Integer = cRandom.Next(1, 100)     ' "数量"   (1 以上 100 未満の乱数を取得する)
            dat.Rows.Add(i, iResult2)
        Next

        Chart1.DataSource = dat
        Chart1.Series.Clear()
        Dim oresen = Chart1.Series.Add("棒グラフ")
        With oresen
            .ChartType = DataVisualization.Charting.SeriesChartType.Column
            .XValueMember = "年月日時分"     ' X軸
            .YValueMembers = "数量"          ' Y軸
            .IsVisibleInLegend = False
        End With
    End Sub
End Class

引用返信 編集キー/
■83351 / inTopicNo.8)  Re[4]: ChartのX軸に日・時・分を指定し表示
□投稿者/ shu (979回)-(2017/03/18(Sat) 22:39:10)
No83343 (KY さん) に返信

提示されたサンプルに手を加えたものです。

        Dim dat As DataTable = New DataTable
        With dat.Columns
            .Add("年月日時分", GetType(Date))    ' X軸 <---- 実際は"2017/03/16 16:31"、"2017/03/16 16:32"、・・・ などの"年月日時分"です。 
            .Add("数量", GetType(Integer))          ' Y軸
        End With

        Dim cRandom As New System.Random()                     ' Random クラスの新しいインスタンスを生成する
        Dim iResult1 As Integer = cRandom.Next(13, 186)       ' 実際は"年月日時分"ですが分かり易く 13以上 186 未満の乱数を取得し開始を決めている
        Dim baseDate = Date.Today.AddDays(-iResult1)
        For i = iResult1 To iResult1 + 100
            Dim iResult2 As Integer = cRandom.Next(1, 100)     ' "数量"   (1 以上 100 未満の乱数を取得する)
            dat.Rows.Add(baseDate.AddMinutes(i), iResult2)
        Next

        Chart1.DataSource = dat
        Chart1.Series.Clear()
        Dim oresen = Chart1.Series.Add("棒グラフ")
        With oresen
            .ChartType = DataVisualization.Charting.SeriesChartType.Column
            .XValueMember = "年月日時分"     ' X軸
            .YValueMembers = "数量"          ' Y軸
            .IsVisibleInLegend = False
        End With
        With Chart1.ChartAreas(0)
            With .AxisX
                .LabelStyle.Format = "yyyy/MM/dd HH:mm"
                .IntervalType = DataVisualization.Charting.DateTimeIntervalType.Minutes
                .Interval = 15
            End With
        End With

引用返信 編集キー/
■83389 / inTopicNo.9)  Re[5]: ChartのX軸に日・時・分を指定し表示
□投稿者/ KY (7回)-(2017/03/20(Mon) 20:15:28)
2017/03/20(Mon) 20:29:11 編集(投稿者)
No83351 (shu さん) に返信

ありがとうございます。
教えて頂いたので動作はしたのですが下記のサンプルに置き換えてはみたのですがどうも上手くいきません。
応用は可能でしょうか?
それと関係が有るのかは分かりませんが、実際のチャートではX軸に対してスクロールも掛けています。

        Dim ds As New DataSet
        Dim dt As New DataTable
        Dim dtRow As DataRow
        '列の作成
        dt.Columns.Add("年月日時分", GetType(String))  'GetType(Date)
        dt.Columns.Add("数量", GetType(Integer))
        ds.Tables.Add(dt)
        'データの追加
        Dim cRandom As New System.Random()                ' Random クラスの新しいインスタンスを生成する
        Dim iResult1 As Integer = cRandom.Next(13, 186)   ' 実際は"年月日時分"ですが分かり易く 13以上 186 未満の乱数を取得し開始を決めている
        For i = iResult1 To iResult1 + 100
            dtRow = ds.Tables(0).NewRow
            dtRow(0) = i
            dtRow(1) = cRandom.Next(1, 100)               ' "数量"   (1 以上 100 未満の乱数を取得する) 
            ds.Tables(0).Rows.Add(dtRow)
        Next
        'Chart1
        Chart1.DataSource = ds   'Chart に表示するデータソースを設定
        Chart1.Series.Clear()    '系列を初期化
        Dim oresen = Chart1.Series.Add("棒グラフ")
        With oresen
            .ChartType = DataVisualization.Charting.SeriesChartType.Column
            .XValueMember = "年月日時分"     ' X軸
            .YValueMembers = "数量"          ' Y軸
            .IsVisibleInLegend = False
        End With

        GoTo kk
        With Chart1.ChartAreas(0)
            With .AxisX
                .LabelStyle.Format = "yyyy/MM/dd HH:mm"  ' "yyyy/MM/dd HH:mm"      "yyyy/MM/dd"日 
                .IntervalType = DataVisualization.Charting.DateTimeIntervalType.Minutes
                .Interval = 15   '1440分=1日
            End With
        End With
kk:

引用返信 編集キー/
■83392 / inTopicNo.10)  Re[6]: ChartのX軸に日・時・分を指定し表示
□投稿者/ shu (982回)-(2017/03/20(Mon) 23:03:15)
No83389 (KY さん) に返信

> dt.Columns.Add("年月日時分", GetType(String))  'GetType(Date)
この型を変えてしまっては
IntervalType = DataVisualization.Charting.DateTimeIntervalType.Minutes
が効かなくなってしまいます。
(文字列は時間ではないので)


> GoTo kk
> With Chart1.ChartAreas(0)
> With .AxisX
> .LabelStyle.Format = "yyyy/MM/dd HH:mm" ' "yyyy/MM/dd HH:mm" "yyyy/MM/dd"日
> .IntervalType = DataVisualization.Charting.DateTimeIntervalType.Minutes
> .Interval = 15 '1440分=1日
> End With
> End With
> kk:

ここの処理を行わないようにしているのかと思いますがGotoは使わないで
If false Then
・・・
End If
でくくった方がわかりやすいかと思います。

引用返信 編集キー/
■83396 / inTopicNo.11)  Re[7]: ChartのX軸に日・時・分を指定し表示
□投稿者/ KY (8回)-(2017/03/21(Tue) 00:49:57)
No83392 (shu さん) に返信

ありがとうございます。

>> dt.Columns.Add("年月日時分", GetType(String))  'GetType(Date)
> この型を変えてしまっては
はい、そうですね。

> ここの処理を行わないようにしているのかと思いますがGotoは使わないで
はい、ここの処理を行わないようにしていますがこのような方法もあるのですね、今後はそうします。

サンプルの修正をいただけると有難いです。
特に、前回教えていただいた
> Dim baseDate = Date.Today.AddDays(-iResult1)

> dat.Rows.Add(baseDate.AddMinutes(i), iResult2)
はどうしてよいのか分かりませんので。
引用返信 編集キー/
■83397 / inTopicNo.12)  Re[8]: ChartのX軸に日・時・分を指定し表示
□投稿者/ shu (984回)-(2017/03/21(Tue) 07:24:14)
No83396 (KY さん) に返信

>>ここの処理を行わないようにしているのかと思いますがGotoは使わないで
> はい、ここの処理を行わないようにしていますがこのような方法もあるのですね、今後はそうします。
さらに
#if false Then
・・・
#End If
にするとコンパイル自体されないので
コメントアウトするほどではないがコンパイルには
含めたくない場合に有用です。


>
> サンプルの修正をいただけると有難いです。
> 特に、前回教えていただいた
>>Dim baseDate = Date.Today.AddDays(-iResult1)
> と
>> dat.Rows.Add(baseDate.AddMinutes(i), iResult2)
> はどうしてよいのか分かりませんので。
実際のデータ追加処理にすればよいので
データをDate型の値とそのときのy軸の値を設定すればよいかと思います。
元が文字列であれば
Date.Parse (DateTime.Parse)
Date.TryParse (DateTime.TryParse)
Date.TryParseExact (DateTime.TryParseExact)
などを使ってDate型へ変換するとよいかと思います。



引用返信 編集キー/
■83407 / inTopicNo.13)  Re[9]: ChartのX軸に日・時・分を指定し表示
□投稿者/ KY (9回)-(2017/03/21(Tue) 23:02:34)
No83397 (shu さん) に返信

ありがとうございます。

> さらに
> #if false Then
> ・・・
> #End If
> にするとコンパイル自体されないので
> コメントアウトするほどではないがコンパイルには
> 含めたくない場合に有用です。
そのような効果もあるのですね。

> 実際のデータ追加処理にすればよいので
> データをDate型の値とそのときのy軸の値を設定すればよいかと思います。
> 元が文字列であれば
> Date.Parse (DateTime.Parse)
> Date.TryParse (DateTime.TryParse)
> Date.TryParseExact (DateTime.TryParseExact)
> などを使ってDate型へ変換するとよいかと思います。
はい、元のデータは "2017/03/21 11:17:00" などの文字列です。 
dtRow(0) = DateTime.Parse("2017/03/21 11:17:00") などとしてデータを追加したのですがそれだけでは上手くいかないようです。
お手数ですがテスト用に"2017/03/21 11:17:00" などの文字列を配列として作る方法を教えて頂けないでしょうか。
それを元にもう一度サンプルを作りたいと思います。

引用返信 編集キー/
■83417 / inTopicNo.14)  Re[10]: ChartのX軸に日・時・分を指定し表示
□投稿者/ shu (985回)-(2017/03/22(Wed) 13:43:12)
No83407 (KY さん) に返信

> はい、元のデータは "2017/03/21 11:17:00" などの文字列です。 
> dtRow(0) = DateTime.Parse("2017/03/21 11:17:00") などとしてデータを追加したのですがそれだけでは上手くいかないようです。

先の提示されたコードで
  .Add("年月日時分", GetType(Integer))
ここを
  .Add("年月日時分", GetType(Date))
とすれば
その処理自体は問題ないと思いますが、
何が起きているのでしょうか?


> お手数ですがテスト用に"2017/03/21 11:17:00" などの文字列を配列として作る方法を教えて頂けないでしょうか。
> それを元にもう一度サンプルを作りたいと思います。
この文字列からどんな配列をつくりたいのですか?

引用返信 編集キー/
■83423 / inTopicNo.15)  Re[11]: ChartのX軸に日・時・分を指定し表示
□投稿者/ KY (10回)-(2017/03/22(Wed) 17:33:32)
2017/03/22(Wed) 17:54:04 編集(投稿者)
No83417 (shu さん) に返信

すみません。
取り敢えずは
http://k-db.com/futures/F101-0000/5m 
にあった「日経平均先物 期近限月つなぎ 5分足 時系列データ」をCSV保存し、そのデータを活用してみましたので、
もし可能でしたらそれを修正いただけないでしょうか?

このデータは5分単位なのですが、それを20分毎とか30分毎とかで設定をし表示が出来るようであれば多分OKだと思うのです。
ただ、開始もですが終了も"年月日時分"は様々ですし、データも途中で抜けてるとこもあります。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'CSVファイル読み込み  <----- http://k-db.com/futures/F101-0000/5m  など、取り敢えずは「日経平均先物 期近限月つなぎ 5分足 時系列データ」をCSV保存し、そのデータを活用してみました。
        Dim datS As Integer = -1       'データ数
        Dim dat_ymdHm(500) As String   '"年月日時分"
        Dim dat_suryo(500) As Integer  '数量

        Dim sfileM As String = "C:\Users\++++\Downloads\futures_F101-0000_5m.csv"   'CSV保存をしたファイル名
       
        Using sr As New System.IO.StreamReader(sfileM, System.Text.Encoding.Default)
            Do While Not sr.EndOfStream
                Dim da As String = sr.ReadLine     '1行全てを読み取る(ReadLineメソッド)
                Dim dat0() As String              
                dat0 = da.Split(",")               '一行を, (カンマ)で区切って項目ごとに分解
                If dat0(0) <> "日付" Then
                    If Val(dat0(7)) > 0 Then       '0 の場合はデータとしての活用意味がないため除く
                        datS = datS + 1
                        dat_ymdHm(datS) = dat0(0)        
                        dat_ymdHm(datS) = dat_ymdHm(datS) & " " & dat0(1) & ":00"   '時分

                        Mid(dat_ymdHm(datS), 5, 1) = "/" : Mid(dat_ymdHm(datS), 8, 1) = "/"  '"2016/10/11 10:24:00" などに書式を変換する

                        dat_suryo(datS) = Val(dat0(7))     '売買代金のみ数量として利用

                    End If
                End If
            Loop
            sr.Close()
        End Using

        'データの配列を逆にし時系列に変更する。(もっと良い方法があるのでしょうが)
        Dim dummy_datS As Integer = -1
        Dim dummy_dat_ymdHm(500) As String
        Dim dummy_dat_suryo(500) As Integer
        For i = datS To 0 Step -1
            dummy_datS = dummy_datS + 1
            dummy_dat_ymdHm(dummy_datS) = dat_ymdHm(i)
            dummy_dat_suryo(dummy_datS) = dat_suryo(i)
        Next
        For i = 0 To datS
            dat_ymdHm(i) = dummy_dat_ymdHm(i)
            dat_suryo(i) = dummy_dat_suryo(i)
        Next

        'チャートの作成
        Dim ds As New DataSet
        Dim dt As New DataTable
        Dim dtRow As DataRow
        '列の作成
        dt.Columns.Add("年月日時分", GetType(String))
        dt.Columns.Add("数量", GetType(Integer))
        ds.Tables.Add(dt)
        'データの追加
        For i = 0 To datS
            dtRow = ds.Tables(0).NewRow
            dtRow(0) = dat_ymdHm(i)
            dtRow(1) = dat_suryo(i)                    '売買代金を数量としてセット
            ds.Tables(0).Rows.Add(dtRow)
        Next
        'Chart1
        Chart1.DataSource = ds   'Chart に表示するデータソースを設定
        Chart1.Series.Clear()    '系列を初期化
        Dim oresen = Chart1.Series.Add("棒グラフ")
        With oresen
            .ChartType = DataVisualization.Charting.SeriesChartType.Column
            .XValueMember = "年月日時分"     ' X軸
            .YValueMembers = "数量"          ' Y軸
            .IsVisibleInLegend = False
        End With

        If False Then
            With Chart1.ChartAreas(0)
                With .AxisX
                    .LabelStyle.Format = "yyyy/MM/dd HH:mm"  ' "yyyy/MM/dd HH:mm"      "yyyy/MM/dd"日 
                    .IntervalType = DataVisualization.Charting.DateTimeIntervalType.Minutes
                    .Interval = 15
                End With
            End With
        End If</pre></pre></pre></pre>

引用返信 編集キー/
■83425 / inTopicNo.16)  Re[12]: ChartのX軸に日・時・分を指定し表示
□投稿者/ shu (986回)-(2017/03/22(Wed) 22:52:56)
No83423 (KY さん) に返信

これで一応表示はできるかと思います。

    Private _dt As DataTable

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        _dt = New DataTable()
        With _dt.Columns
            .Add("年月日時分", GetType(Date))
            .Add("数量", GetType(Integer))
        End With

        For Each line In File.ReadAllLines("D:\temp\futures_F101-0000_5m.csv", Encoding.GetEncoding(932))
            Dim values = line.Split(","c)
            Dim v = 0
            Integer.TryParse(values(7), v)

            If v > 0 Then
                Dim 日付 As Date
                Date.TryParseExact(String.Format("{0} {1}", values(0), values(1)), "yyyy-MM-dd HH:mm", Nothing, Nothing, 日付)
                _dt.Rows.Add(日付, v)
            End If
        Next

        'Chart1
        Chart1.DataSource = _dt.AsEnumerable.Skip(0).Take(50)   'Chart に表示するデータソースを設定
        Chart1.Series.Clear()    '系列を初期化
        Dim oresen = Chart1.Series.Add("棒グラフ")
        With oresen
            .ChartType = DataVisualization.Charting.SeriesChartType.Column
            .XValueMember = "年月日時分"     ' X軸
            .YValueMembers = "数量"          ' Y軸
            .IsVisibleInLegend = False
        End With

        With Chart1.ChartAreas(0)
            With .AxisX
                .LabelStyle.Format = "yyyy/MM/dd HH:mm"  ' "yyyy/MM/dd HH:mm"      "yyyy/MM/dd"日 
                .IntervalType = DataVisualization.Charting.DateTimeIntervalType.Minutes
                .Interval = 15
            End With
        End With
    End Sub

引用返信 編集キー/
■83426 / inTopicNo.17)  Re[13]: ChartのX軸に日・時・分を指定し表示
□投稿者/ KY (11回)-(2017/03/23(Thu) 02:02:40)
2017/03/23(Thu) 02:10:56 編集(投稿者)
No83425 (shu さん) に返信

ありがとうございます。

はい、表示は出来たのですが実際のデータ数は 227 もあるのに対して、何故かチャートで表示されてる棒は 50 程しかありません。
227 全てを表示させたいです。

それと・・、
String型のデータを前もって作っておいて、下記のサンプルをそのまま利用は出来ないでしょうか?
実際には"年月日時分"、"数量"の他にも 何項目かもありますので。

        'チャートの作成
        Dim ds As New DataSet
        Dim dt As New DataTable
        Dim dtRow As DataRow
        '列の作成
        dt.Columns.Add("年月日時分", GetType(String))   'GetType(Date)
        dt.Columns.Add("数量", GetType(Integer))
        ds.Tables.Add(dt)
        'データの追加
        For i = 0 To datS
            dtRow = ds.Tables(0).NewRow
            dtRow(0) = dat_ymdHm(i)
            dtRow(1) = dat_suryo(i)                    '売買代金を数量としてセット
            ds.Tables(0).Rows.Add(dtRow)
        Next

引用返信 編集キー/
■83445 / inTopicNo.18)  Re[14]: ChartのX軸に日・時・分を指定し表示
□投稿者/ shu (987回)-(2017/03/23(Thu) 21:29:15)
No83426 (KY さん) に返信
> 2017/03/23(Thu) 02:10:56 編集(投稿者)
>
> ■No83425 (shu さん) に返信
>
> ありがとうございます。
>
> はい、表示は出来たのですが実際のデータ数は 227 もあるのに対して、何故かチャートで表示されてる棒は 50 程しかありません。
> 227 全てを表示させたいです。
>
227も提示されたChartに表示するとラベルが重なってしまうので50個だけ抽出してあります。
.Skip(0).Take(50)
のTakeです。この部分を外せば全データがグラフ上には表示されるでしょう。


> それと・・、
> String型のデータを前もって作っておいて、下記のサンプルをそのまま利用は出来ないでしょうか?
> 実際には"年月日時分"、"数量"の他にも 何項目かもありますので。
何度も言ってますがDate型でないとご希望のことはできません。
DataTableの項目に日付型の項目と文字列型の項目を持つのはいいと思いますが、グラフに割り当てるのは
日付項目にする必要があります。

引用返信 編集キー/
■83500 / inTopicNo.19)  Re[15]: ChartのX軸に日・時・分を指定し表示
□投稿者/ KY (12回)-(2017/03/25(Sat) 02:06:56)
2017/03/25(Sat) 02:08:46 編集(投稿者)

No83445 (shu さん) に返信

ありがとうございます。

> 227も提示されたChartに表示するとラベルが重なってしまうので50個だけ抽出してあります。
> .Skip(0).Take(50)
> のTakeです。この部分を外せば全データがグラフ上には表示されるでしょう。
そう言うことなんですね。

> 何度も言ってますがDate型でないとご希望のことはできません。
> DataTableの項目に日付型の項目と文字列型の項目を持つのはいいと思いますが、グラフに割り当てるのは
> 日付項目にする必要があります。
83423 のサンプルを日付型に変更をして表示はされるようにはなりました。
しかし教えて頂いた83425でもですが、例えば
Chart1.DataSource = _dt.AsEnumerable.Skip(0).Take(200)
.Interval = 30
とし、実行をしますと、2017/03/21 16:00が数量0で表示がされるのですが、
元のデータ"futures_F101-0000_5m.csv"には、その2017/03/21 16:00は無いのです。
これは何とかならないものでしょうか?
引用返信 編集キー/
■83533 / inTopicNo.20)  Re[16]: ChartのX軸に日・時・分を指定し表示
 
□投稿者/ shu (990回)-(2017/03/27(Mon) 13:31:24)
No83500 (KY さん) に返信

> 元のデータ"futures_F101-0000_5m.csv"には、その2017/03/21 16:00は無いのです。
> これは何とかならないものでしょうか?
その場所にデータがないことを設定するようなプロパティとかがないでしょうか?

引用返信 編集キー/

このトピックをツリーで一括表示

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -