LiveChart2を試す
LiveCharts の続編が出ていたみたい。なんと、Blazor や MAUI にも使えるっぽいので試してみたい。
色々と付属品も必要らしい。
サンプルコードをビルドしたら動いたので、サンプルの書き方を見ながら書けばなんとかなりそう。
とりあえずサンプルと同じロジックで書いてみた。
@page "/"
@using LiveChartsCore.SkiaSharpView.Blazor;
@using Module;
<section>
<CartesianChart
Series="LineChart.SeriesCollection"
ZoomMode="LiveChartsCore.Measure.ZoomAndPanMode.X">
</CartesianChart>
</section>
@code{
public LineChart LineChart { get; set; } = new();
}
using LiveChartsCore;
using LiveChartsCore.SkiaSharpView;
namespace BlazorApps.Module
{
public class LineChart
{
public IEnumerable<ISeries> SeriesCollection { get; set; }
public LineChart()
{
var values = new int[100];
var rnd = new Random();
for (int i = 0; i < values.Length; i++)
{
values[i] = rnd.Next(0, 100);
}
SeriesCollection = new ISeries[] { new LineSeries<int> { Values = values } };
}
}
}
これでビルドしてみたら、参照が足りていないみたいでエラーが表示された。
とりあえず、外部のプロジェクト(beto-rodriguez 氏 の Blazor プロジェクト) LiveChartsCore.SkiaSharpView.Blazor
を追加してみたら、うまく表示された。
が、"legend class =>" と "container class =>" の表示が気になるのと、動きが重いかなぁ。
やっぱり大量の点をプロットする場合は OxyPlot が最適解な気がしてきた。
【LiveCharts2】
OxyPlot と比べて簡単に実装でき、アニメーションも豊富。リファレンスも充実している。
しかし、プロット数が1000を超えると重くてFPSが下がる。
約8000円のライセンスを支払えば拡張機能によって最適化が行われて高速になるらしい。
【OxyPlot】
LiveCharts2 と比べて実装が少し難しく、アニメーションが無い。リファレンスが少ないので見つけるまでが大変かも。
しかし、プロット数が1万点を超えてもサクサク動き、無料で利用できる。
【総評】
かっこいいグラフをつくりたいなら LiveCharts2
サクサク動くグラフをつくりたいなら OxyPlot
という感じかと。特に研究データはプロット数が大量になる可能性が高いので、OxyPlot がおすすめ。WinForms の Chart コントロールは .NET Core 以降では推奨されていないみたい。
以上をもってクローズ。