我使用Live图表。经过的SeriesCollection线路系列中值=图表值。在绑定XAML中,我传递的SeriesCollection。我明白,只有Y型点传输(我不改变默认的任何东西)。如何透过X点?通过指数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>
确定在LiveChart有可能使用其表示X,在图表中Y位置视点。
您需要添加适当的命名空间来使用这些
using LiveCharts.Defaults;
我modfied两件事情在你的功能,首先我改变的定义和对ChartValues初始化由空的typeof ObservablePoint的,所以我们将在以后的动态补这些。你也需要改变Points对象是ObservablePoint的类型
ChartValues<ObservablePoint> series = new ChartValues<ObservablePoint>();
而且还修改了这些系列的填充对象只添加非零:
for (int i = 0; i < 20; i++)
{
if (arraySeries[i] != 0)
{
series.Add(new ObservablePoint(i, arraySeries[i]));
}
}
它不会画非零之间的零-Y-点。