Alignement de graphiques multi-séries : génération d'une plage de dates complète
La création de graphiques multi-séries présente souvent un défi : différentes séries de données peuvent avoir des intervalles de données incohérents au sein de la même période, ce qui conduit à des graphiques mal alignés. Pour résoudre ce problème, nous avons besoin d’une liste de dates complète couvrant toute la plage, quelles que soient les lacunes dans les données. Cela garantit un alignement correct et permet un remplissage nul des points de données manquants.
Méthode 1 : Solution LINQ élégante
Cette approche LINQ concise génère efficacement la liste de dates souhaitée :
<code class="language-csharp">Enumerable.Range(0, 1 + end.Subtract(start).Days) .Select(offset => start.AddDays(offset)) .ToArray();</code>
Ce code crée d'abord une séquence d'entiers représentant les décalages de jours à partir de la date de début. Ensuite, il ajoute chaque décalage à la date de début, produisant un tableau contenant chaque date dans la plage spécifiée.
Méthode 2 : boucle For itérative
Alternativement, une boucle for
fournit une approche plus explicite, étape par étape :
<code class="language-csharp">var dates = new List<DateTime>(); for (var dt = start; dt <= end; dt = dt.AddDays(1)) { dates.Add(dt); }</code>
Cette boucle itère de jour en jour, ajoutant chaque date à une liste jusqu'à ce que la date de fin soit atteinte.
Combler les lacunes avec des valeurs par défaut
Pour gérer les données manquantes, utilisez un dictionnaire pour mapper chaque date de la plage complète à sa valeur correspondante (ou une valeur par défaut si la date est absente) :
<code class="language-csharp">var paddedSeries = fullDates.ToDictionary(date => date, date => timeSeries.ContainsKey(date) ? timeSeries[date] : defaultValue);</code>
Voici fullDates
la liste complète des dates. Si timeSeries
contient une valeur pour une date donnée, cette valeur est utilisée ; sinon, le defaultValue
est attribué. Cela garantit que toutes les dates sont représentées dans la série finale.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!