Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9517

WPF はじめての OxyPlot

$
0
0
WPFはチャート難民? 本気でチャートを使いたい民は、グレープシティ、インフラジスティックス、SciChartなど有料コンポーネントを使うのか・・・? さらっと公式HPを見た感じだと LiveCharts.Wpf が良さそうだったけど、残念ながら .NET Core 3.1 に対応していない なので代わりに OxyPlot.Wpf をプロジェクトに導入する 成果物 本記事で掲載しているコードの元プロジェクト ※ GitHubのほうは随時更新する予定 WPFでOxyPlotをつかう (いろいろ調べている中で予感はしていたけど、ドキュメントの整備が行き届いていない) プロジェクトを立ち上げたら以下 NuGet パッケージをインストールする Install-Package OxyPlot.Wpf とりあえずグラフを描いてみる Docs » Getting started » WPF チュートリアルの通りにコピペして実行すると、緑色のコサインカーブが表示される グラフの細かいところを変更する Qiita記事から部品取りしていくのが早い 記事 おすすめポイント [C#] oxyplotでグラフを書く1 コードが長く載っているので、必要なところだけ取って使える 【更新あり】OxyPlotでグラフを表示させる際にハマったことまとめ 「おまけ」の章に、いろいろ細かい設定をする方法が載っている [C#] OxyPlot Tips集 やりたいことごとに章分けされている プロットを更新する 手順が3つ書かれているが、XAMLへPlotModelをバインディングしている場合は、PlotModel.Invalidate(true)を呼べばグラフが更新される Case1: グラフを書き換える Clear()して、データをAddして、InvalidPlot(true)をする MyModel1.Series.Clear(); MyModel1.Series.Add(new FunctionSeries(Math.Sin, 0, 10, 0.1, "sin(x)")); MyModel1.InvalidatePlot(true); Case1' グラフの上に別のグラフを描く Clearしなかった場合は、既存のプロットに追加される //MyModel1.Series.Clear(); MyModel1.Series.Add(new FunctionSeries(Math.Sin, 0, 10, 0.1, "sin(x)")); MyModel1.InvalidatePlot(true); Case2: グラフのプロットを追加する すでにあるプロットにデータを追加していく PlotModelのシリーズを別途保持(_lineSeries)しておいて、そこにAddする var x = DateTime.Now.Second; var y = new Random().Next(-100, 100); _lineSeries.Points.Add(new DataPoint(x, y)); MyModel2.InvalidatePlot(true); Case3: モデルのデータをプロットする データはViewModelとは別にモデルで持っておきたい MyModel3 = _plotModelHandler.Create(); _plotModelHandler.Update(); //---------------------------------- // Model _model.Axes.Add(XAxis); // 軸の最大値などを設定している _model.Series.Add(_series); // モデルがデータを保持している internal void Update() { var x = new Random().Next(0, 1023); var y = new Random().Next(0, 4065); _series.Points.Add(new DataPoint(x, y)); _model.InvalidatePlot(true); } おわりに 凝ったことしなければ、シンプルで使いやすいライブラリだと思う

Viewing all articles
Browse latest Browse all 9517

Trending Articles