複数系列グラフの整列: 完全な日付範囲の生成
複数系列のグラフの作成には、多くの場合、課題が伴います。異なるデータ系列では、同じ時間枠内でデータ間隔が一貫していない可能性があり、グラフの位置がずれてしまう可能性があります。 これを解決するには、データのギャップに関係なく、範囲全体にわたる完全な日付リストが必要です。これにより、適切な位置合わせが保証され、欠落したデータ ポイントのゼロ パディングが可能になります。
方法 1: エレガントな LINQ ソリューション
この簡潔な LINQ アプローチは、目的の日付リストを効率的に生成します。
<code class="language-csharp">Enumerable.Range(0, 1 + end.Subtract(start).Days) .Select(offset => start.AddDays(offset)) .ToArray();</code>
このコードはまず、開始日からの日のオフセットを表す一連の整数を作成します。次に、各オフセットを開始日に追加し、指定された範囲内のすべての日付を含む配列を生成します。
方法 2: 反復 For ループ
あるいは、for
ループは、より明示的な段階的なアプローチを提供します。
<code class="language-csharp">var dates = new List<DateTime>(); for (var dt = start; dt <= end; dt = dt.AddDays(1)) { dates.Add(dt); }</code>
このループは毎日繰り返され、終了日に達するまで各日付をリストに追加します。
デフォルト値でギャップを埋める
欠損データを処理するには、辞書を使用して、完全な範囲内の各日付を対応する値 (日付が欠落している場合はデフォルト) にマップします。
<code class="language-csharp">var paddedSeries = fullDates.ToDictionary(date => date, date => timeSeries.ContainsKey(date) ? timeSeries[date] : defaultValue);</code>
ここで、fullDates
は包括的な日付リストです。 timeSeries
に特定の日付の値が含まれている場合は、その値が使用されます。それ以外の場合は、defaultValue
が割り当てられます。 これにより、すべての日付が最終シリーズで表現されるようになります。
以上が複数系列のグラフを調整するために 2 つの日付間の包括的な日付リストを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。