質問編集履歴
4
最後の一文を追記しました
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とやりたい事を足しました
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -78,9 +78,13 @@
|
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
```
|
|
81
|
+

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