対数スケールの目盛り
対数スケーリングの表示は、表示するデータを対数スケール化し、補助目盛りとグリッドをカスタマイズすることで実現できます。
ScottPlot.Plot myPlot = new();
// 元のデータから開始する
double[] xs = Generate.Consecutive(100);
double[] ys = Generate.NoisyExponential(100);
// データを対数スケール化し、負の値を考慮する
double[] logYs = ys.Select(Math.Log10).ToArray();
// 対数スケール化したデータをプロットに追加する
myPlot.Add.ScatterPoints(xs, logYs);
// 対数分布の補助目盛りを配置する補助目盛りジェネレーターを作成する
ScottPlot.TickGenerators.LogMinorTickGenerator minorTickGen = new();
// カスタム補助目盛りジェネレーターを使用する数値目盛りジェネレーターを作成する
ScottPlot.TickGenerators.NumericAutomatic tickGen = new();
tickGen.MinorTickGenerator = minorTickGen;
// 各目盛りのラベルテキストを設定するカスタム目盛りフォーマッターを作成する
static string LogTickLabelFormatter(double y) => $"{Math.Pow(10, y):N0}";
// 主目盛りジェネレーターに、整数の主目盛りのみを表示するよう指示する
tickGen.IntegerTicksOnly = true;
// カスタム目盛りジェネレーターに、新しいラベルフォーマッターを使用するよう指示する
tickGen.LabelFormatter = LogTickLabelFormatter;
// 左軸に、カスタム目盛りジェネレーターを使用するよう指示する
myPlot.Axes.Left.TickGenerator = tickGen;
// 補助目盛りのグリッド線を表示する
myPlot.Grid.MajorLineColor = Colors.Black.WithOpacity(.15);
myPlot.Grid.MinorLineColor = Colors.Black.WithOpacity(.05);
myPlot.Grid.MinorLineWidth = 1;
myPlot.SavePng("demo.png", 400, 300);
このレシピは、目盛りのカスタマイズカテゴリに含まれる多数のレシピのひとつです
