トップ回答者
グラフデータの持ち方について

質問
-
お世話になります。
データの持ち方の相談です。
グラフデータの持ち方なのですが、以下のようなデータをどのように持つと
プログラムで扱いやすくなるでしょうか?
大項目1 ・・・ 大項目2
中項目1 中項目2 ・・・ 中項目1
データa データb データa データb データa データb
0 10 0 10 1 30
1 20 2 40 2 50
・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・以下のようにデータを扱えるとうれしいです。
・大項目、中項目を指定すると、グラフのデータ配列a・bが取得できる。
・データaを指定するとデータbが取得できる。
(データaは時間なのですが、時間を指定すると、その時間のデータbを取得したい。)
よろしくお願いいたします
回答
-
- 最小のデータ ユニットは「データa」「データb」である。
- 不定数の中項目がある。
- 不定数の大項目がある。
でいいですか?
直打一例
public class DataUnit { public DateTime データa; public decimal データb; } public class 項目 { public string 名称; public System.Collections.DataModel.Collections<DataUnit> データ; public System.Collections.DataModel.Collections<項目> 下位項目; }
Jitta@わんくま同盟
- 回答としてマーク 山本春海 2012年8月2日 8:44
-
エネコンさん、こんにちは、Fuda1ロボットです。
>データaを指定するとデータbが取得できる。
この辺は少し、何かメソッドを作る必要が有りますが、基本的な所を考えて見ました。using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DataTest01 { class Program { /////////////////////// // クラスを定義する // /////////////////////// public class Cデータ { public DateTime a; public double b; } public class C中項目 { public string 名称; public List<Cデータ>データ; public C中項目() { データ = new List<Cデータ>(); } } public class C大項目 { public string 名称; public List<C中項目>中項目; public C大項目() { 中項目 =new List<C中項目>(); } } public class Cグラフデータ { public string 名称; public List<C大項目>大項目; public Cグラフデータ() { 大項目 = new List<C大項目>(); } } static void Main(string[] args) { ///////////////////////////// // データを格納する処理 // ///////////////////////////// // データ01 Cデータ データ01 = new Cデータ(); データ01.a = DateTime.Now; // 現在時刻 データ01.b = 30.0; // 気温30度 // データ02 Cデータ データ02 = new Cデータ(); データ02.a = DateTime.Now; // 現在時刻 データ02.b = 25.0; // 気温30度 // データ03 Cデータ データ03 = new Cデータ(); データ03.a = DateTime.Now; // 現在時刻 データ03.b = 33.0; // 気温30度 // 中項目01 C中項目 中項目01 = new C中項目(); 中項目01.名称 = "東京"; 中項目01.データ.Add(データ01); 中項目01.データ.Add(データ02); 中項目01.データ.Add(データ03); // 中項目02 C中項目 中項目02 = new C中項目(); 中項目02.名称 = "静岡"; 中項目02.データ.Add(データ01); 中項目02.データ.Add(データ02); 中項目02.データ.Add(データ03); // 大項目01 C大項目 大項目01 = new C大項目(); 大項目01.名称 = "日本"; 大項目01.中項目.Add(中項目01); 大項目01.中項目.Add(中項目02); // グラフデータ Cグラフデータ グラフデータ = new Cグラフデータ(); グラフデータ.名称="全国の気温"; グラフデータ.大項目.Add(大項目01); ///////////////////////////// // データを表示する処理 // ///////////////////////////// // 東京の気温 Console.WriteLine(グラフデータ.大項目[0].中項目[0].データ[0].a); Console.WriteLine(グラフデータ.大項目[0].中項目[0].データ[0].b); Console.WriteLine(グラフデータ.大項目[0].中項目[0].データ[1].a); Console.WriteLine(グラフデータ.大項目[0].中項目[0].データ[1].b); // 静岡の気温 Console.WriteLine(グラフデータ.大項目[0].中項目[1].データ[2].a); Console.WriteLine(グラフデータ.大項目[0].中項目[1].データ[2].b); } } }
すべての返信
-
- 最小のデータ ユニットは「データa」「データb」である。
- 不定数の中項目がある。
- 不定数の大項目がある。
でいいですか?
直打一例
public class DataUnit { public DateTime データa; public decimal データb; } public class 項目 { public string 名称; public System.Collections.DataModel.Collections<DataUnit> データ; public System.Collections.DataModel.Collections<項目> 下位項目; }
Jitta@わんくま同盟
- 回答としてマーク 山本春海 2012年8月2日 8:44
-
エネコンさん、こんにちは、Fuda1ロボットです。
>データaを指定するとデータbが取得できる。
この辺は少し、何かメソッドを作る必要が有りますが、基本的な所を考えて見ました。using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DataTest01 { class Program { /////////////////////// // クラスを定義する // /////////////////////// public class Cデータ { public DateTime a; public double b; } public class C中項目 { public string 名称; public List<Cデータ>データ; public C中項目() { データ = new List<Cデータ>(); } } public class C大項目 { public string 名称; public List<C中項目>中項目; public C大項目() { 中項目 =new List<C中項目>(); } } public class Cグラフデータ { public string 名称; public List<C大項目>大項目; public Cグラフデータ() { 大項目 = new List<C大項目>(); } } static void Main(string[] args) { ///////////////////////////// // データを格納する処理 // ///////////////////////////// // データ01 Cデータ データ01 = new Cデータ(); データ01.a = DateTime.Now; // 現在時刻 データ01.b = 30.0; // 気温30度 // データ02 Cデータ データ02 = new Cデータ(); データ02.a = DateTime.Now; // 現在時刻 データ02.b = 25.0; // 気温30度 // データ03 Cデータ データ03 = new Cデータ(); データ03.a = DateTime.Now; // 現在時刻 データ03.b = 33.0; // 気温30度 // 中項目01 C中項目 中項目01 = new C中項目(); 中項目01.名称 = "東京"; 中項目01.データ.Add(データ01); 中項目01.データ.Add(データ02); 中項目01.データ.Add(データ03); // 中項目02 C中項目 中項目02 = new C中項目(); 中項目02.名称 = "静岡"; 中項目02.データ.Add(データ01); 中項目02.データ.Add(データ02); 中項目02.データ.Add(データ03); // 大項目01 C大項目 大項目01 = new C大項目(); 大項目01.名称 = "日本"; 大項目01.中項目.Add(中項目01); 大項目01.中項目.Add(中項目02); // グラフデータ Cグラフデータ グラフデータ = new Cグラフデータ(); グラフデータ.名称="全国の気温"; グラフデータ.大項目.Add(大項目01); ///////////////////////////// // データを表示する処理 // ///////////////////////////// // 東京の気温 Console.WriteLine(グラフデータ.大項目[0].中項目[0].データ[0].a); Console.WriteLine(グラフデータ.大項目[0].中項目[0].データ[0].b); Console.WriteLine(グラフデータ.大項目[0].中項目[0].データ[1].a); Console.WriteLine(グラフデータ.大項目[0].中項目[0].データ[1].b); // 静岡の気温 Console.WriteLine(グラフデータ.大項目[0].中項目[1].データ[2].a); Console.WriteLine(グラフデータ.大項目[0].中項目[1].データ[2].b); } } }
-
エネコンさん、こんばんは! Fuda1です。
XML形式ですか、入門編ですので、難しく考えないで、テキスト文書で、データに名前を付けたものとしました。
整形式XML文書(DTDなし) <?xml version="1.0" encoding="Shift-JIS" ?> <グラフデータ> <データ01> <時間>00:00:00</時間> <気温>30.0</気温> </データ01> <データ02> <時間>00:00:10</時間> <気温>25.0</気温> </データ02> <データ03> <時間>00:00:20</時間> <気温>33.0</気温> </データ03> <中項目01> <名称>東京</名称> <ADD01>データ01</ADD01> <ADD02>データ02</ADD02> <ADD03>データ03</ADD03> </中項目01> <中項目02> <名称>静岡</名称> <ADD01>データ01</ADD01> <ADD02>データ02</ADD02> <ADD03>データ03</ADD03> </中項目02> <大項目> <名称>全国の気温</名称> <ADD01>大項目01</ADD01> </大項目> </グラフデータ>
こんな感じで、作っていけると思いますが、如何でしょうか?