質問するログイン新規登録

回答編集履歴

1

見直しキャンペーン中

2023/07/17 13:54

投稿

TN8001
TN8001

スコア10260

answer CHANGED
@@ -1,76 +1,77 @@
1
- Chartコントロールは使ったことがないので何か間違いがあるかもしれませんが、それっぽく表示されているように思います。
2
- ![アプリ画像](8f2d5ede87cfcefacc9b509c568c847a.png)
3
- ```C#
4
- using System;
5
- using System.IO;
6
- using System.Text;
7
- using System.Windows.Forms;
8
- using System.Windows.Forms.DataVisualization.Charting;
9
-
10
- namespace Questions231716
11
- {
12
- public partial class Form1 : Form
13
- {
14
- public Form1()
15
- {
16
- InitializeComponent();
17
- Dammy();
18
- }
19
-
20
- private void button1_Click(object sender, EventArgs e)
21
- {
22
- var list = File.ReadAllLines("test.csv");
23
-
24
- var legend = "グラフ1";
25
- chart1.Series.Clear();
26
-
27
- // Minimum Maximum ちょっと微妙
28
- chart1.ChartAreas[0].AxisX.Minimum = DateTime.MinValue.AddHours(12).ToOADate();
29
- chart1.ChartAreas[0].AxisX.Maximum = DateTime.MinValue.AddHours(17).ToOADate();
30
- chart1.ChartAreas[0].AxisX.Interval = 1;
31
- chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Hours;
32
- chart1.ChartAreas[0].AxisX.IntervalOffsetType = DateTimeIntervalType.Hours;
33
- chart1.ChartAreas[0].AxisX.LabelStyle.Format = "HH:mm:ss";
34
-
35
- chart1.ChartAreas[0].AxisY.Minimum = 1.5;
36
- chart1.ChartAreas[0].AxisY.Maximum = 2.5;
37
-
38
- chart1.Series.Add(legend);
39
- chart1.Series[legend].ChartType = SeriesChartType.Line;
40
- chart1.Series[legend].LegendText = legend;
41
- chart1.Series[legend].XValueType = ChartValueType.Time;
42
- chart1.Series[legend].IsVisibleInLegend = false;
43
- chart1.Series[legend].IsValueShownAsLabel = false;
44
-
45
- foreach(var line in list)
46
- {
47
- // ここも微妙だが日付は固定したほうが安全そう
48
- var xValue = DateTime.Parse("0001/01/01 " + line.Substring(0, 8));
49
- var yValue = line.Substring(12, 4);
50
-
51
- var dp = new DataPoint();
52
- dp.SetValueXY(xValue, yValue);
53
- dp.IsValueShownAsLabel = false;
54
- chart1.Series[legend].Points.Add(dp);
55
- }
56
- }
57
-
58
- private void Dammy()
59
- {
60
- var r = new Random();
61
- var sb = new StringBuilder();
62
- var d = DateTime.MinValue.AddHours(12);
63
- while(true)
64
- {
65
- d += TimeSpan.FromSeconds(r.Next(60, 600));
66
- if(17 <= d.Hour) break;
67
- sb.Append(d.ToString("HH:mm:ss"));
68
- sb.Append(",00,");
69
- sb.AppendLine((r.NextDouble() + 1.5).ToString("0.00"));
70
- }
71
-
72
- File.WriteAllText("test.csv", sb.ToString());
73
- }
74
- }
75
- }
1
+ Chartコントロールは使ったことがないので何か間違いがあるかもしれませんが、それっぽく表示されているように思います。
2
+
3
+ ![アプリ画像](8f2d5ede87cfcefacc9b509c568c847a.png)
4
+ ```cs
5
+ using System;
6
+ using System.IO;
7
+ using System.Text;
8
+ using System.Windows.Forms;
9
+ using System.Windows.Forms.DataVisualization.Charting;
10
+
11
+ namespace Questions231716
12
+ {
13
+ public partial class Form1 : Form
14
+ {
15
+ public Form1()
16
+ {
17
+ InitializeComponent();
18
+ Dammy();
19
+ }
20
+
21
+ private void button1_Click(object sender, EventArgs e)
22
+ {
23
+ var list = File.ReadAllLines("test.csv");
24
+
25
+ var legend = "グラフ1";
26
+ chart1.Series.Clear();
27
+
28
+ // Minimum Maximum ちょっと微妙
29
+ chart1.ChartAreas[0].AxisX.Minimum = DateTime.MinValue.AddHours(12).ToOADate();
30
+ chart1.ChartAreas[0].AxisX.Maximum = DateTime.MinValue.AddHours(17).ToOADate();
31
+ chart1.ChartAreas[0].AxisX.Interval = 1;
32
+ chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Hours;
33
+ chart1.ChartAreas[0].AxisX.IntervalOffsetType = DateTimeIntervalType.Hours;
34
+ chart1.ChartAreas[0].AxisX.LabelStyle.Format = "HH:mm:ss";
35
+
36
+ chart1.ChartAreas[0].AxisY.Minimum = 1.5;
37
+ chart1.ChartAreas[0].AxisY.Maximum = 2.5;
38
+
39
+ chart1.Series.Add(legend);
40
+ chart1.Series[legend].ChartType = SeriesChartType.Line;
41
+ chart1.Series[legend].LegendText = legend;
42
+ chart1.Series[legend].XValueType = ChartValueType.Time;
43
+ chart1.Series[legend].IsVisibleInLegend = false;
44
+ chart1.Series[legend].IsValueShownAsLabel = false;
45
+
46
+ foreach(var line in list)
47
+ {
48
+ // ここも微妙だが日付は固定したほうが安全そう
49
+ var xValue = DateTime.Parse("0001/01/01 " + line.Substring(0, 8));
50
+ var yValue = line.Substring(12, 4);
51
+
52
+ var dp = new DataPoint();
53
+ dp.SetValueXY(xValue, yValue);
54
+ dp.IsValueShownAsLabel = false;
55
+ chart1.Series[legend].Points.Add(dp);
56
+ }
57
+ }
58
+
59
+ private void Dammy()
60
+ {
61
+ var r = new Random();
62
+ var sb = new StringBuilder();
63
+ var d = DateTime.MinValue.AddHours(12);
64
+ while(true)
65
+ {
66
+ d += TimeSpan.FromSeconds(r.Next(60, 600));
67
+ if(17 <= d.Hour) break;
68
+ sb.Append(d.ToString("HH:mm:ss"));
69
+ sb.Append(",00,");
70
+ sb.AppendLine((r.NextDouble() + 1.5).ToString("0.00"));
71
+ }
72
+
73
+ File.WriteAllText("test.csv", sb.ToString());
74
+ }
75
+ }
76
+ }
76
77
  ```