Работает с меньшим количеством данных диаграмма

This commit is contained in:
Артём Алейкин 2023-11-02 09:12:44 +04:00
parent a17f19981a
commit c7b0db4fa3
3 changed files with 18 additions and 7 deletions

View File

@ -66,9 +66,21 @@ namespace WinFormsLibrary
foreach (var data in simpleCircleDiagram.DataList)
{
seriesColl.Add(data.NameSeries, simpleCircleDiagram.NameData ,data.Data);
int count = Math.Min(simpleCircleDiagram.NameData.Length, data.Data.Length);
// Создаем временный массив для данных и имен, содержащий только необходимое количество элементов.
string seriesNames = data.NameSeries;
double[] seriesData = data.Data.Take(count).ToArray();
string[] categoryNames = simpleCircleDiagram.NameData.Take(count).ToArray();
// Добавляем только непустые серии с данными в график.
if (seriesData.Length > 0)
{
seriesColl.Add(seriesNames, categoryNames, seriesData);
}
}
ChartLegend legend = chart.Legend;
legend.Position = (LegendPosition)simpleCircleDiagram.AreaLegend;

View File

@ -5,6 +5,7 @@
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
</PropertyGroup>
<ItemGroup>

View File

@ -63,8 +63,6 @@ namespace WinFormsProject
new int[] { 0, 1, 2 }
};
List<ColumnDefinition> columnDefinitions = new List<ColumnDefinition>
{
new ColumnDefinition { Header = "Образование", PropertyName = "Eduction", Weight = 35 },
@ -119,11 +117,11 @@ namespace WinFormsProject
{
try
{
double[] profit1 = { 300, 440, 270 };
double[] profit1 = { 300, 324, 500 };
double[] profit2 = { 500, 620, 310 };
double[] profit3 = { 420, 189, 430 };
double[] profit3 = { 420, 189, 420 };
SimpleCircleDiagram simpleCircleDiagram = new(dialog.FileName, "Третье задание", "График прибыли", EnumAreaLegend.Right, new List<DataCircleDiagram> {
new DataCircleDiagram("Компания 1", profit1), new DataCircleDiagram("Компания 2", profit2), new DataCircleDiagram("Компания 3", profit3),
new DataCircleDiagram("Компания 1", profit1), new DataCircleDiagram("Компания 2", profit2), new DataCircleDiagram("Компания 3", profit3)
});
simpleCircleDiagram.NameData = new string[] { "Январь", "Февраль", "Март" };