| お世話になっています。
今、使ってるプログラムは下記のようなものですが実際のはもっと複雑ですので、あまり大きく変えたくないとこもあります。
それプラス、我流ですが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
|