前言
WinForm中有自己的图表控件,在WPF中好像没有了,不过引用这个第三方库,就可以轻松的绘制出漂亮的图表控件了。
1、导入包
使用,搜索LiveCharts.Wpf。进行安装即可。在XAML中添加命名空间 xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
2、折线图
前台:
<lvc:CartesianChart x:Name="myChart" Series="{Binding SeriesCollection}">
<lvc:CartesianChart.AxisX>
<!--Labels 为图形标签数据-->
<lvc:Axis Title="库位" Labels="{Binding Labels}"/>
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<!--Formatter 为Y轴单位-->
<lvc:Axis Title="数量" LabelFormatter="{Binding Formatter}"/>
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>
后台:
SeriesCollection = new SeriesCollection
{
new ColumnSeries
{
Title = "大件",
Values = new ChartValues<double> { 10, 50, 39, 50,20,11 }
}
};
//adding series will update and animate the chart automatically
SeriesCollection.Add(new ColumnSeries
{
Title = "小件",
Values = new ChartValues<double> { 11, 56, 42,20,30,40 }
});
//also adding values updates and animates the chart automatically
SeriesCollection[1].Values.Add(48d);
Labels = new[] { "第一层", "第二层", "第三层", "第四层", "第五层", "第六层" };
Formatter = value => value.ToString("N");
DataContext = this;
// 图形数据属性
public SeriesCollection SeriesCollection { get; set; }
// 标签属性
public string[] Labels { get; set; }
// Y轴坐标属性
public Func<double, string> Formatter { get; set; }
3、饼图
前台:
<lvc:PieChart Grid.Column="1" Series="{Binding SeriesCollection2}">
</lvc:PieChart>
后台:
4、柱状图
<lvc:CartesianChart x:Name="myChart" Series="{Binding SeriesCollection}">
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="检测名称" Labels="{Binding Labels}" />
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="数量" LabelFormatter="{Binding Formatter}" />
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>
后台:
// 图形数据属性
public SeriesCollection SeriesCollection { get; set; }
//条状图数据
SeriesCollection.Clear();
ColumnSeries cs1 = new ColumnSeries
{
Title = "OK",
Values = new ChartValues<int>(oks),// { 20, 50, 39, 50, 20, 11 },
Fill = new SolidColorBrush(Colors.Green)
};
SeriesCollection.Add(cs1);
SeriesCollection.Add(new ColumnSeries
{
Title = "NG",
Values = new ChartValues<int>(ngs),//{ 40, 56, 42, 20, 30, 40 },
Fill = new SolidColorBrush(Colors.Red)
});
Labels.Clear();
Labels.AddRange(names);