Я использую Live Chart.SeriesCollection передает серию строк, в которой значения = значения диаграммы.В xaml в Binding я передаю SeriesCollection.Я понимаю, что передаются только y-точки (по умолчанию я ничего не меняю).Как передать х баллов?Пробовал в ChartValue по индексу, ругается, что индекс пустой.И даже если вы изначально установите размер значений диаграммы, ячейки, не заполненные на диаграмме, будут заполнены как Y = 0. Пожалуйста, помогите, три дня сидели на нем.
GenerateChart.cs:
public ChartValues<double> Points { get; set; }
double[] arraySeries = new double[30];
double[] array = new double[20];
public LineSeries GenerateSeries(string axis)
{
Random randomSeries = new Random();
ChartValues<double> series = new ChartValues<double>(new double[20]);
if (axis == "Y")
{
for (int i = 0; i < 5; i++)
{
double randomValue = randomSeries.Next(1, 20);
if (!array.Contains(randomValue))
{
array[i] = randomValue;
}
else
{
i--;
}
}
for (int i = 0; i < 5; i++)
{
double randomValue = randomSeries.Next(1, 20);
if (!arraySeries.Contains(randomValue))
{
int index = Convert.ToInt32(array[i]);
arraySeries[index] = randomValue;
}
else
{
i--;
}
}
for (int i = 0; i < 20; i++)
{
if (arraySeries[i] != 0)
{
series.Insert(i, arraySeries[i]);
}
}
//series.AddRange(arraySeries);
}
Points = series;
var testSeries = new LineSeries
{
Title = "Test",
Values = series
};
return testSeries;
}
RandomSeries.cs:
public SeriesCollection Series { get; private set; }
public SeriesCollection SeriesX { get; private set; }
public ChartValues<double> Points { get; private set; }
double[] arraySeries = new double[30];
double[] array = new double[20];
public SeriesCollection BuidChart()
{
Random randomSeries = new Random();
var generateChart = new GenerateChart();
Series = new SeriesCollection
{
generateChart.GenerateSeries("Y")
};
Points = generateChart.Points;
return Series;
}
ModelView.cs:
public SeriesCollection SeriesCollection { get; set; }
public ChartValues<double> Points { get; set; }
public RandomSeries randomSeries;
public Func<double, string> YFormatter { get; set; }
public string[] Labels { get; set; }
public SeriesCollection SeriesCollectionX { get; set; }
public void BuildFunction()
{
//Points.Clear();
//SeriesCollection.Clear();
randomSeries = new RandomSeries();
SeriesCollection = new SeriesCollection();
Points = new ChartValues<double>();
SeriesCollection.AddRange(randomSeries.BuidChart());
//Points.AddRange(randomSeries.Points);
//SeriesCollection.AddRange(randomSeries.BuidChart());
//Points.AddRange(randomSeries.Points);
Labels = new[] { "Jan", "Feb", "Mar", "Apr", "May", "Jan1", "Feb1", "Mar1", "Apr1", "May1" };
}
MainWindow.xaml:
<Window.DataContext>
<local:ModelView/>
</Window.DataContext>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="257*"/>
<ColumnDefinition Width="536*"/>
</Grid.ColumnDefinitions>
<lvc:CartesianChart Series="{Binding SeriesCollection}" LegendLocation="Right" Grid.ColumnSpan="2" Margin="0,0,-0.4,0" >
<!--<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Y" LabelFormatter="{Binding YFormatter}"></lvc:Axis>
</lvc:CartesianChart.AxisY>-->
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="X" Labels="{Binding Labels}"></lvc:Axis>
</lvc:CartesianChart.AxisX>
</lvc:CartesianChart>
</Grid>
Программа результатов: введите описание изображения здесь