2017-02-22 7 views
0

グラフシリーズのグループを作成し、シリーズにデータを追加してから、シリーズをいくつか表示して表示します。データが変更され、ユーザーは表示する系列を選択できます。この方法は、すべてのシリーズをchart.Series.Clear();でクリアし、同じ方法でシリーズを再作成するよりも優れていると思います。グラフシリーズを作成し、データを追加して可視性を設定します

たとえば、ランダムマイレージを持つカープール内の自動車のリストを表示し、次に表示する自動車を選択します。

以下のコードは機能しません(どこにコメントしましたか)。このシリーズは公開されていないので、SeriesCollectionのような公開コレクションに追加する必要があると思いますが、どうすればよいか分かりません。

ありがとうございました。

// create new chart series and add to a chartarea 
     ChartArea TestChartArea = new ChartArea(); 
     public void CreateChartSeries() 
     { 
      List<string> lstCars = new List<string> { "Mazda", "Tesla", "Honda", "Jaguar", "Ford", "Toyota" }; 

      foreach (string Car in lstCars) 
      { 
       // car series created correctly? 
       var Srs = new Series(Car); 
       Srs.ChartArea = TestChart.Name; 
       Srs.YAxisType = AxisType.Primary; 
       Srs.Color = Color.Red; 
       Srs.ChartType = SeriesChartType.Line; 
       TestChart.Series.Add(Srs); 
      } 
     } 

     // add data to chart series 
     public void SeriesData() 
     { 
      List<string> lstCars = new List<string> { "Mazda", "Tesla", "Honda", "Jaguar", "Ford", "Toyota" }; 
      int[] Xseries = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
      int[] Milage = new int[10]; 

      Random Random = new Random(); 

      foreach (string Car in lstCars) 
      { 
       for (int M = 0; M < 10; M++) 
        Milage[M] = Random.Next(150, 15000); 

       // not sure how to call and add data to each series 
       Srs.Points.DataBindXY(Xseries, Milage); 
      } 
     } 

     // plot series - some visible 
     public void PlotCreatedSeries() 
     { 
      // not sure how to refer to each series 
      Mazda.Enabled = true; 
      Tesla.Enabled = false; 
      Honda.Enabled = true; 
      Jaguar.Enabled = false; 
      Ford.Enabled = true; 
      Toyota.Enabled = false; 
     } 

答えて

1

あなたはSeriesだけループ内で使用可能な範囲すなわちである作成するために使用'Srs'名前。あなたはChartに新しく作成されたSeriesを追加doループの終わりに:

TestChart.Series.Add(Srs); 

Seriesプロパティ公共SeriesCollectionです。あなたはどちらかそれにアクセスすることができますにこれは今から... Legend(s)またはChartArea(s)、たとえば、に反対するとして単数形名と複数のプロパティ名として、この場合においても同様である、

少し混乱していますそのインデックスで..

Series s = TestChart.Series[0] // the series you have added first 

..or、より読みやすく、そのNameプロパティによって、より安定した:

Series s = TestChart.Series["Mazda"] // the same series 

TestChart.Series["Mazda"].Enabled = true; 

。なお、 'name'もまた難しい単語です:

変数を宣言すると、その変数に '名前'が付けられます。 Series s = new Series();

しかし、多くのオブジェクトもName呼ばプロパティがあります。s.Name = "Volvo";

前者は一意である必要がありますが、後者は単なる文字列です。それをユニークに保ちますが、システムはあなたを守りません。

前者は決して変更できませんが、わかっているように、範囲外になる可能性があります。後者は単なる文字列であり、それを変更することができます。変数自体は限りそれはまだSeriesiesCollection Seriesの要素として、ここでは、どこかで参照されているようSCOPの出ていないこと

注..

あなたがまたはバインドDataPointsを追加するかどうかを直接ですあなた次第。

前者については、many bindingオプションがあります。

後者のためには使用することができChart.Points methods ..:

  • Add(DataPoint)
  • AddY(YValue)
  • AddXY(XValues, YValue(s))

注意をその時々、特にライブチャートでそれがインサートに理にかなっています a DataPointInsertXXXメソッド!

MSDNで検索してください。真のx値がの数値(またはDateTimes)のように意味のあるx値を追加することは重要ですツールチップ、ズーム、表示範囲などのさらなる目標があります。

これは、初心者の間違いの1つです。 ChartはOKと思われますが、内部のデータは壊れており、読み込みが失われています。

+0

あなたの助けを借りて、私は働くコードを手に入れました! – Zeus

関連する問題