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

質問編集履歴

4

最後の一文を追記しました

2020/01/14 07:15

投稿

hiro0215
hiro0215

スコア15

title CHANGED
File without changes
body CHANGED
@@ -87,4 +87,6 @@
87
87
  このグラフの場合ですとX軸の起点を12:00:00と表示し、その後1時間毎に目盛りと線を13:00:00,14:00:00・・・最後を17:00:00と表示したいとかんがえています。
88
88
 
89
89
  何か良い方法は無いでしょうか?
90
- 質問の仕方がおかしいかもしれませんが、どうかよろしくおねがいします。
90
+ 質問の仕方がおかしいかもしれませんが、どうかよろしくおねがいします。
91
+
92
+ 追記:どうやらカスタムラベルという物を使えばやりたいことが出来そうなのですが使い方がわかりません・・・。

3

chartとやりたい事を足しました

2020/01/14 07:15

投稿

hiro0215
hiro0215

スコア15

title CHANGED
File without changes
body CHANGED
@@ -78,9 +78,13 @@
78
78
 
79
79
 
80
80
  ```
81
+ ![イメージ説明](3fe8b219edbf7b794410e220b4fa9b3b.jpeg)
82
+
81
83
  ボタンを押すとtextファイルを読み込んでchartエリアにグラフを表示します。
82
84
  textデータには「12:34:56」といった形の時間データと数値データが大量に入っています。これをListに格納後、DataPointのX軸に入れています。
83
- 現状だとグラフ作成時に勝手に配置された時間がラベルで表示されているので、時間軸の最小値や任意の時間区切りにしたいのですが、Listに入れたままだとstring型なのでdouble型としてX軸のMinimumなどの値に使う事ができません。
85
+ 現状だとグラフ作成時に勝手に配置された時間がラベルで表示されているので、時間軸の最小値や任意の時間区切りにしたいのですが、Listに入れたままだと型なのでdouble型としてX軸のMinimumなどの値に使う事ができません。
84
86
 
87
+ このグラフの場合ですとX軸の起点を12:00:00と表示し、その後1時間毎に目盛りと線を13:00:00,14:00:00・・・最後を17:00:00と表示したいとかんがえています。
88
+
85
89
  何か良い方法は無いでしょうか?
86
90
  質問の仕方がおかしいかもしれませんが、どうかよろしくおねがいします。

2

文章を少し訂正しました

2019/12/26 04:41

投稿

hiro0215
hiro0215

スコア15

title CHANGED
File without changes
body CHANGED
@@ -79,7 +79,7 @@
79
79
 
80
80
  ```
81
81
  ボタンを押すとtextファイルを読み込んでchartエリアにグラフを表示します。
82
- textデータには「12:34:56」といった形時間データが大量に入っています。これをListに格納後、DataPointのX軸に入れています。
82
+ textデータには「12:34:56」といった形時間データと数値データが大量に入っています。これをListに格納後、DataPointのX軸に入れています。
83
83
  現状だとグラフ作成時に勝手に配置された時間がラベルで表示されているので、時間軸の最小値や任意の時間区切りにしたいのですが、Listに入れたままだとstring型なのでdouble型としてX軸のMinimumなどの値に使う事ができません。
84
84
 
85
85
  何か良い方法は無いでしょうか?

1

現在のコードを追加しました。

2019/12/26 02:00

投稿

hiro0215
hiro0215

スコア15

title CHANGED
File without changes
body CHANGED
@@ -4,8 +4,83 @@
4
4
  C#のchartコントロールを使ってグラフを作成しているのですが、X軸の目盛を任意の時間区切りで表示する方法がわかりません。
5
5
  具体的には目盛りを10:00:00,11:00:00,12:00:00と一時間区切りにしたいのです。
6
6
 
7
+ ```C#
8
+ using System;
9
+ using System.Collections.Generic;
10
+ using System.Text;
11
+ using System.Windows.Forms;
12
+ using System.IO;
7
- textデータには「12:34:56」といった形で時間のデータが大量に入っています。これを配列に格納後、DataPointのX軸に入れています。
13
+ using System.Windows.Forms.DataVisualization.Charting;
8
- 現状だとグラフ作成時に勝手に配置された時間がラベルで表示されているので時間区切りにしたいのですが、配列に入れたままだとstring型なのでdouble型としてMinimumなどの値に使う事ができません。
9
14
 
15
+ namespace グラフ
16
+ {
17
+ public partial class Form1 : Form
18
+ {
19
+ public Form1()
20
+ {
21
+ InitializeComponent();
22
+ }
23
+
24
+
25
+
26
+ private void button1_Click(object sender, EventArgs e)
27
+ {
28
+ //textファイルから読み込み
29
+ int a = 0;
30
+ List<string> list = new List<string>();
31
+ StreamReader sr = new StreamReader("textファイルのパス", Encoding.Default);
32
+ while (sr.Peek() >= 0)
33
+ {
34
+ string line = "";
35
+
36
+ while ((line = sr.ReadLine()) != null)
37
+ {
38
+ a++;
39
+ list.Add(line);
40
+ }
41
+
42
+ }
43
+ sr.Close();
44
+ sr.Dispose();
45
+
46
+ string legend = "グラフ1";
47
+
48
+ chart1.Series.Clear(); //グラフ初期化
49
+ chart1.ChartAreas[0].AxisY.Maximum = 2.5;
50
+ chart1.ChartAreas[0].AxisY.Minimum = 1.5;
51
+ chart1.Series.Add(legend); //グラフ追加
52
+ chart1.Series[legend].ChartType =SeriesChartType.Line;//折れ線グラフ
53
+ chart1.Series[legend].LegendText = legend; //凡例に表示するテキストを指定
54
+
55
+ for (int i = 0; i < chart1.Series.Count; i++)//凡例非表示
56
+ {
57
+ chart1.Series[i].IsVisibleInLegend = false;
58
+ chart1.Series[i].IsValueShownAsLabel = false;
59
+ }
60
+
61
+ for (int n = 0; n <a; n++)
62
+ {
63
+ string[] xValues = new string[] { list[n].Substring(0,8) };//(時間部分「12:34:56」)
64
+ string[] yValues = new string[] { list[n].Substring(12,4) };//(数値部分「2.34」等)
65
+
66
+ for (int i = 0; i < xValues.Length; i++)
67
+ {
68
+ //グラフに追加するデータクラスを生成
69
+ DataPoint dp = new DataPoint();
70
+ dp.SetValueXY(xValues[i], yValues[i]); //XとYの値を設定
71
+ dp.IsValueShownAsLabel = false ; //グラフに値を表示するように指定
72
+ chart1.Series[legend].Points.Add(dp); //グラフにデータ追加
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
78
+
79
+
80
+ ```
81
+ ボタンを押すとtextファイルを読み込んでchartエリアにグラフを表示します。
82
+ textデータには「12:34:56」といった形で時間のデータが大量に入っています。これをListに格納後、DataPointのX軸に入れています。
83
+ 現状だとグラフ作成時に勝手に配置された時間がラベルで表示されているので、時間軸の最小値や任意の時間区切りにしたいのですが、Listに入れたままだとstring型なのでdouble型としてX軸のMinimumなどの値に使う事ができません。
84
+
10
85
  何か良い方法は無いでしょうか?
11
86
  質問の仕方がおかしいかもしれませんが、どうかよろしくおねがいします。