2017-01-23 17 views
2

MongoDBの私のデータ構造が上記のようなものであることを考えると、 NodeIdを自分のタイトルとして、WTの値をチャートの値として使用したい場合は、以下のコードにどのように使用しますか? titleに入力した入力とChartValuesの値を無視します。MongoDBから選択した値を選択するにはどうすればよいですか?

new LineSeries 
    { 
    Title = "Screws", 
    Values = new ChartValues<double> {4.5, 4.5, 4.45, 4.4, 4.4, 4.35, 4.35}, 
    }, 
+0

をプロットすることができますグループ項目の値? –

+0

はい.....実際には、ここにここの値とタイトルのヘルプが必要です。ここで私は手動でChartValuesにポイントを追加し、私が欲しいものではないタイトルに追加しています。私は6つのオブジェクトを持っていて、すべてが異なるWT値を持っています。どのように私はこの値のグラフをプロットするために6を使用するのですか? –

+0

元に戻すことができますか?):@MaksimSimkin –

答えて

0

データのモデルクラスがあるとします。そうでない場合は、作成することをお勧めします。あなたがコレクションからあなたのデータを集計でき、その場合には

public class Value 
{ 
    public ObjectId _id { get; set; } 
    public Event @event { get; set;} 
} 

public class Event 
{ 
    public string NodeId {get;set;} 
    public string FirmwareVER {get;set;} 
    public double SignalSTR {get;set;} 
    public double battery {get;set;} 
    public double CEL {get;set;} 
    public double WT {get;set;} 
    public string Onlinestat {get;set;} 
    public double timeStamp {get;set;} 
} 

:あなたのJSONのための私のモデルは次のようになります

var collection = db.GetCollection<Value>("chart"); 
var res = collection.Aggregate() 
       .Group(x => [email protected], 
        x => new {Name = x.Key, WTs = x.Select(r => [email protected]).ToList()}) 
       .ToList(); 

私が使用しているいくつかのサンプルデータのためになるだろうと:

enter image description here

その後、グラフにデータを取得できます。

LiveChartsの最高の機能の
res.Select(r => new LineSeries{Title = r.Name, Values = new ChartValues<double>(r.WTs)}); 
+0

私の質問はチャートの形です。ここでタイトルはグラフ内の行の名前であり、chartvaluesはグラフをプロットするためにプロットをとっています –

+0

大変申し訳ありませんが、私はそれをmisanderstood、winformsグラフは何でも知っているものではありません:) –

+0

ok。今すぐタイトルを手に入れましょう。私のクラスはur値クラスを置き換えるために、私の質問に追加しました –

0

一つは、あなたが望む任意の型をプロットすることができますということです、そしてあなたがValue型の指定されたIEnumerableWTプロパティをプロットしたい考えると、タイプセーフです。

public class Value 
{ 
    public ObjectId _id { get; set; } 
    public Event @event { get; set;} 
} 

public class Event 
{ 
    public string NodeId {get;set;} 
    public double WT {get;set;} 
} 

あなたは、この場合にValueタイプからWTプロパティをプロットすることを教えることができます、あなたが好きなタイプをプロットするためのライブラリを教えることができます。

var mapper = Mappers.XY<Value>() 
          .X((index,value) => index) 
          .Y((i,v) => (double) [email protected]); 
Charting.For<Value>(mapper); 

換言すれば、この手段は、すべてのライブラリーがChartValues<Value>インスタンスを検出すると、設定したマッパーが使用されます。マッパーは本当に直感的です。つまり、ゼロ座標ベースのインデックスをX座標として使用し、WTのプロパティをYとします。

このラインは通常、アプリケーションの開始時に追加する必要があります。ライブラリを教える多くの方法がありますhttps://lvcharts.net/App/examples/v1/wpf/Types%20and%20Configuration

を参照してくださいそして、それがすべてであるpelase詳細については、カスタム型をプロットする方法を、今あなたが直接あなたが同じタイトルのコレクションからすべての値のグループに必要と重量を得るValueタイプ

IEnumerable<Value> dataSource = // source from data base... 

new LineSeries 
{ 
Title = "Screws", 
Values = dataSource.AsChartValues(), //converts the source to 
             //an instance of ChartValues<Value> 
}, 
関連する問題