none
chartコントロールの基本的な使い方について RRS feed

  • 質問

  • いつもお世話になっております。
    以前、折れ線グラフの実装について質問させていただいたことがあるのですが、その際にMSChartの使用を提案していただきました。
    今になってMSchartの私用を検討しているのですが、基本的な扱い方がわかりません。どうかご教授ください。

    グラフに表示したいデータは8つのDouble型変数で、これらはひとつの構造体に収められています。
    この変数一つ一つに線を割り当てて折れ線グラフを表示したいと考えています。
    フォーム上にChartコントロールを設置しました。これにグラフを表示したいと思っています。

    よろしくお願いいたします。
    2011年1月22日 18:21

回答

  • まずはサンプルを参考にするのがよろしいかと。

      Samples Environment for Microsoft Chart Controls - Home
      http://code.msdn.microsoft.com/mschart

    • 回答としてマーク VANLILY 2011年1月24日 12:08
    2011年1月23日 2:24
  • 2010であれば、ツールボックスの「データ」の中に、「Chart」があります。

    2008以前であれば、以下が参考になります。

    http://www.kanazawa-net.ne.jp/~pmansato/net/net_mschart.htm

     

    totojoさんの参考に目を通していればわかってきますが、複数のグラフを表示したい場合は、

    チャートのシリーズクラスを、必要グラフ数分チャートに追加していく感じです。

    http://msdn.microsoft.com/ja-jp/library/dd456032.aspx

    各シリーズクラスには、そのグラフのタイプ(棒、折れ線など)や、プロットの形状や表示ラベル

    の指定など、細かな設定が可能です。

    http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datavisualization.charting.series_properties.aspx

     

    今回の場合は8つのDouble型メンバを持つ構造体で、それぞれが折れ線グラフということですので

    おそらくは、この構造体が配列になっていると推測します。

    以下はシンプルな例です、参考にしてみてください。

    実際は、さらに見た目などの配慮が必要と思いますので、各参考URLを参照してみてください。

    // 構造体
    struct Struct1
    {
    	public double d1;
    	public double d2;
    	public double d3;
    	public double d4;
    }
    // フォームロード
    private void Form1_Load(object sender, EventArgs e)
    {
    	// テストデータ
    	List<Struct1> myList = new List<Struct1>();
    	myList.Add(new Struct1()
    	{
    		d1 = 1, d2 = 2, d3 = 4, d4 = 1.2
    	});
    	myList.Add(new Struct1()
    	{
    		d1 = 1.1, d2 = 2.1, d3 = 3.8, d4 = 2.2
    	});
    	myList.Add(new Struct1()
    	{
    		d1 = 1.3, d2 = 2.2, d3 = 3.5, d4 = 5.4
    	});
    	myList.Add(new Struct1()
    	{
    		d1 = 1.3, d2 = 2.3, d3 = 3.3, d4 = 5.5
    	});
    	// チャートシリーズの初期化
    	Series s1 = new Series() { LegendText = "グラフ1", ChartType = SeriesChartType.Line };
    	Series s2 = new Series() { LegendText = "グラフ2", ChartType = SeriesChartType.Line };
    	Series s3 = new Series() { LegendText = "グラフ3", ChartType = SeriesChartType.Line };
    	Series s4 = new Series() { LegendText = "グラフ4", ChartType = SeriesChartType.Line };
    	// 各シリーズに構造体データを設定
    	foreach (Struct1 l in myList)
    	{
    		s1.Points.Add(l.d1);
    		s2.Points.Add(l.d2);
    		s3.Points.Add(l.d3);
    		s4.Points.Add(l.d4);
    	}
    	// チャートシリーズをコントロールに設定
    	this.chart1.Series.Clear();
    	this.chart1.Series.Add(s1);
    	this.chart1.Series.Add(s2);
    	this.chart1.Series.Add(s3);
    	this.chart1.Series.Add(s4);
    }
    
    

     

    • 回答としてマーク VANLILY 2011年1月24日 12:08
    2011年1月24日 1:34

すべての返信

  • まずはサンプルを参考にするのがよろしいかと。

      Samples Environment for Microsoft Chart Controls - Home
      http://code.msdn.microsoft.com/mschart

    • 回答としてマーク VANLILY 2011年1月24日 12:08
    2011年1月23日 2:24
  • 2010であれば、ツールボックスの「データ」の中に、「Chart」があります。

    2008以前であれば、以下が参考になります。

    http://www.kanazawa-net.ne.jp/~pmansato/net/net_mschart.htm

     

    totojoさんの参考に目を通していればわかってきますが、複数のグラフを表示したい場合は、

    チャートのシリーズクラスを、必要グラフ数分チャートに追加していく感じです。

    http://msdn.microsoft.com/ja-jp/library/dd456032.aspx

    各シリーズクラスには、そのグラフのタイプ(棒、折れ線など)や、プロットの形状や表示ラベル

    の指定など、細かな設定が可能です。

    http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datavisualization.charting.series_properties.aspx

     

    今回の場合は8つのDouble型メンバを持つ構造体で、それぞれが折れ線グラフということですので

    おそらくは、この構造体が配列になっていると推測します。

    以下はシンプルな例です、参考にしてみてください。

    実際は、さらに見た目などの配慮が必要と思いますので、各参考URLを参照してみてください。

    // 構造体
    struct Struct1
    {
    	public double d1;
    	public double d2;
    	public double d3;
    	public double d4;
    }
    // フォームロード
    private void Form1_Load(object sender, EventArgs e)
    {
    	// テストデータ
    	List<Struct1> myList = new List<Struct1>();
    	myList.Add(new Struct1()
    	{
    		d1 = 1, d2 = 2, d3 = 4, d4 = 1.2
    	});
    	myList.Add(new Struct1()
    	{
    		d1 = 1.1, d2 = 2.1, d3 = 3.8, d4 = 2.2
    	});
    	myList.Add(new Struct1()
    	{
    		d1 = 1.3, d2 = 2.2, d3 = 3.5, d4 = 5.4
    	});
    	myList.Add(new Struct1()
    	{
    		d1 = 1.3, d2 = 2.3, d3 = 3.3, d4 = 5.5
    	});
    	// チャートシリーズの初期化
    	Series s1 = new Series() { LegendText = "グラフ1", ChartType = SeriesChartType.Line };
    	Series s2 = new Series() { LegendText = "グラフ2", ChartType = SeriesChartType.Line };
    	Series s3 = new Series() { LegendText = "グラフ3", ChartType = SeriesChartType.Line };
    	Series s4 = new Series() { LegendText = "グラフ4", ChartType = SeriesChartType.Line };
    	// 各シリーズに構造体データを設定
    	foreach (Struct1 l in myList)
    	{
    		s1.Points.Add(l.d1);
    		s2.Points.Add(l.d2);
    		s3.Points.Add(l.d3);
    		s4.Points.Add(l.d4);
    	}
    	// チャートシリーズをコントロールに設定
    	this.chart1.Series.Clear();
    	this.chart1.Series.Add(s1);
    	this.chart1.Series.Add(s2);
    	this.chart1.Series.Add(s3);
    	this.chart1.Series.Add(s4);
    }
    
    

     

    • 回答としてマーク VANLILY 2011年1月24日 12:08
    2011年1月24日 1:34
  • totojoさん、honefaiさん、ご返信ありがとうございます。
    >>まずはサンプルを参考にするのがよろしいかと。
    URLありがとうございます。確認させていただきます。

    honefaiさん、サンプルまで示していただきありがとうございます。
    参考にさせていただきます。
    2011年1月24日 12:07