Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

対数スケールの目盛り

対数スケーリングの表示は、表示するデータを対数スケール化し、補助目盛りとグリッドをカスタマイズすることで実現できます。

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);
このレシピは、目盛りのカスタマイズカテゴリに含まれる多数のレシピのひとつです