WPF图表绘制(LiveCharts)

这篇具有很好参考价值的文章主要介绍了WPF图表绘制(LiveCharts)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

WPF图表绘制(LiveCharts)

效果如下图:
WPF图表绘制(LiveCharts)使用到的DLL:LiveCharts.dll、LiveCharts.Wpf.dll

1.折线图

xaml界面代码(前台代码)

  <lvc:CartesianChart Series="{Binding LineSeriesCollection}"
                            LegendLocation="Right">
            <lvc:CartesianChart.AxisY>
                <lvc:Axis></lvc:Axis>
            </lvc:CartesianChart.AxisY>
            <lvc:CartesianChart.AxisX>
                <lvc:Axis Labels="{Binding LineXLabels}"></lvc:Axis>
            </lvc:CartesianChart.AxisX>
        </lvc:CartesianChart>

viewmodel代码(后台代码)

   public void GetLineSeriesData()
        {
            List<List<double>> values = new List<List<double>>
                {
                    new List<double> { 20, 40, 60 },
                    new List<double> { 100, 30, 80 },
                    new List<double> { 55, 65, 45 },
                    new List<double> { 90, 60, 80 }
                };
            List<string> _dates = new List<string>();
            //获取当前月的日期
            _dates = GetCurrentMonthDates();
            for (int i = 0; i < titles.Count; i++)
            {
                LineSeries lineseries = new LineSeries();
                lineseries.DataLabels = true;
                lineseries.Title = titles[i];
                lineseries.Values = new ChartValues<double>(values[i]);
                LineXLabels.Add(_dates[i]);
                LineSeriesCollection.Add(lineseries);
            }
        }

2.柱状图

xaml界面代码(前台代码)

  <lvc:CartesianChart Series="{Binding ColunmSeriesCollection}"
                            LegendLocation="Right">
            <lvc:CartesianChart.AxisX>
                <lvc:Axis Labels="{Binding ColumnXLabels}"></lvc:Axis>
            </lvc:CartesianChart.AxisX>
            <lvc:CartesianChart.AxisY>
                <lvc:Axis></lvc:Axis>
            </lvc:CartesianChart.AxisY>
        </lvc:CartesianChart>

viewmodel代码(后台代码)

public void GetColunmSeriesData()
{
List columnValues = new List { 40, 30, 25, 60 };
for (int i = 0; i < titles.Count; i++)
{
ColumnXLabels.Add(titles[i]);
}
ColumnSeries colunmseries = new ColumnSeries();
colunmseries.DataLabels = true;
colunmseries.Title = “水果份额”;
colunmseries.Values = new ChartValues(columnValues);
ColunmSeriesCollection.Add(colunmseries);
}

3.饼状图

xaml界面代码(前台代码)

 <lvc:PieChart LegendLocation="
                    Bottom"
                      Series="{Binding PieSeriesCollection}"
                      DataClick="Chart_OnDataClick"
                      Hoverable="False">
            <lvc:PieChart.DataTooltip>
                <lvc:DefaultTooltip BulletSize="10"></lvc:DefaultTooltip>
            </lvc:PieChart.DataTooltip>
        </lvc:PieChart>

xaml.cs代码

private void Chart_OnDataClick(object sender, ChartPoint chartpoint)
        {
            var chart = (LiveCharts.Wpf.PieChart)chartpoint.ChartView;
            //清除选定的切片
            foreach (PieSeries series in chart.Series)
                series.PushOut = 0;
            var selectedSeries = (PieSeries)chartpoint.SeriesView;
            selectedSeries.PushOut = 8;
        }

viewmodel代码(后台代码)

 public void GetPieSeriesData()
        {
            List<double> pieValues = new List<double> { 55, 30, 10,5 };
            ChartValues<double> chartvalue = new ChartValues<double>();
            for (int i = 0; i < titles.Count; i++)
            {
                chartvalue = new ChartValues<double>();
                chartvalue.Add(pieValues[i]);
                PieSeries series = new PieSeries();
                series.DataLabels = true;
                series.Title = titles[i];
                series.Values = chartvalue;
                PieSeriesCollection.Add(series);
            }
        }

前台整体代码

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" 
        WindowStartupLocation="CenterScreen"
        Height="800" 
        Width="800">
    <!--UniformGrid 是一种横向的网格分割、纵向的网格分割分别是均等的分割的布局类型,故称为 " 均分布局 "。-->
    <!--UniformGrid 有两个属性,分别是:Columns 和 Rows ,它们是分别用来指定当前的最大列数和最大的行数,如果只设置了其中一个而不设置另外一个的话,那么没有设置的那个默认为 1;在设置的这两个属性的情况下,UniformGrid 不再会按照行、列数相同来分布,而是按照用户指定的 Columns 和 Rows 来分布;-->
    <UniformGrid>
        <!--折线图-->
        <lvc:CartesianChart Series="{Binding LineSeriesCollection}"
                            LegendLocation="Right">
            <lvc:CartesianChart.AxisY>
                <lvc:Axis></lvc:Axis>
            </lvc:CartesianChart.AxisY>
            <lvc:CartesianChart.AxisX>
                <lvc:Axis Labels="{Binding LineXLabels}"></lvc:Axis>
            </lvc:CartesianChart.AxisX>
        </lvc:CartesianChart>
        <!--柱状图-->
        <lvc:CartesianChart Series="{Binding ColunmSeriesCollection}"
                            LegendLocation="Right">
            <lvc:CartesianChart.AxisX>
                <lvc:Axis Labels="{Binding ColumnXLabels}"></lvc:Axis>
            </lvc:CartesianChart.AxisX>
            <lvc:CartesianChart.AxisY>
                <lvc:Axis></lvc:Axis>
            </lvc:CartesianChart.AxisY>
        </lvc:CartesianChart>
        <!--饼状图-->
        <lvc:PieChart LegendLocation="
                    Bottom"
                      Series="{Binding PieSeriesCollection}"
                      DataClick="Chart_OnDataClick"
                      Hoverable="False">
            <lvc:PieChart.DataTooltip>
                <lvc:DefaultTooltip BulletSize="10"></lvc:DefaultTooltip>
            </lvc:PieChart.DataTooltip>
        </lvc:PieChart>
    </UniformGrid>
</Window>

前端布局可以使用:UniformGrid和StackPanel
UniformGrid:
(1)UniformGrid是一种横向的网格分割、纵向的网格分割分别是均等的分割的布局类型,故称为 " 均分布局 "。
(2)UniformGrid 有两个属性,分别是:Columns 和 Rows ,它们是分别用来指定当前的最大列数和最大的行数,如果只设置了其中一个而不设置另外一个的话,那么没有设置的那个默认为 1;在设置的这两个属性的情况下,UniformGrid 不再会按照行、列数相同来分布,而是按照用户指定的 Columns 和 Rows 来分布。
StackPanel:
(1)StackPanel是以堆叠的方式来显示控件(从左到右,或者从上到下),默认是从上到下显示的,并且宽度为StackPanel的宽度,高度自动适应控件中内容的高度。
(2)通过 Orientation方向 属性来设置布局的样式(水平还是垂直,即上面说的从左到右,或从上到下)。文章来源地址https://www.toymoban.com/news/detail-439682.html

后台公共代码以及属性

 /// <summary>
        /// 获取当前月的每天的日期
        /// </summary>
        /// <returns>日期集合</returns>
        List<string> GetCurrentMonthDates()
        {
            List<string> dates = new List<string>();
            DateTime dateTime = DateTime.Now;
            int year = dateTime.Year;
            int mouth = dateTime.Month;
            int days = DateTime.DaysInMonth(year, mouth);
            //本月第一天时间      
            DateTime dateTime_First = dateTime.AddDays(1 - (dateTime.Day));
            dates.Add(String.Format("{0:d}", dateTime_First.Date));
            for (int i = 1; i < days; i++)
            {
                DateTime temp = dateTime_First.AddDays(i);
                dates.Add(String.Format("{0:d}", temp.Date));
            }
            return dates;
        }

        #region 属性

        public List<string> titles = new List<string> { "苹果", "草莓", "梨", "香蕉" };

        private SeriesCollection _lineSeriesCollection = new SeriesCollection();
        /// <summary>
        /// 折线图集合
        /// </summary>
        public SeriesCollection LineSeriesCollection
        {
            get{ return _lineSeriesCollection;}
            set{ _lineSeriesCollection = value;}
        }

        private SeriesCollection _colunmSeriesCollection = new SeriesCollection();
        /// <summary>
        /// 柱状图集合
        /// </summary>
        public SeriesCollection ColunmSeriesCollection
        {
            get{return _colunmSeriesCollection;}
            set{ _colunmSeriesCollection = value;}
        }

        private SeriesCollection _pieSeriesCollection = new SeriesCollection();
        /// <summary>
        /// 饼图图集合
        /// </summary>
        public SeriesCollection PieSeriesCollection
        {
            get{return _pieSeriesCollection; }
            set{ _pieSeriesCollection = value;}
        }

        private List<string> _lineXLabels = new List<string>();
        /// <summary>
        /// 折线图X坐标
        /// </summary>
        public List<string> LineXLabels
        {
            get{return _lineXLabels;}
            set{ _lineXLabels = value;}
        }

        private List<string> _columnXLabels = new List<string>();
        /// <summary>
        /// 柱状图X坐标
        /// </summary>
        public List<string> ColumnXLabels
        {
            get{return _columnXLabels;}
            set{_columnXLabels = value;}
        }

        #endregion

到了这里,关于WPF图表绘制(LiveCharts)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF常用UI库和图标库(MahApps、HandyControl、LiveCharts)

    WPF有很多开源免费的UI库,本文主要介绍常见的MahApps、HandyControl两个UI库;在开发过程中经常会涉及到图表的开发,本文主要介绍LiveCharts开源图表库。 第三方UI库的使用一般都是三步: Nuget安装 在APP.xaml中增加资源 在MainWindow.xaml中引用命名空间 xmlns:xxxx=\\\"xxxxxxx\\\" MahApps MahApps.

    2024年02月16日
    浏览(31)
  • Wpf中使用OxyPlot制作图表

    OxyPlot是.NET下一款非常强大的图表库,几乎可以涵盖各种图表的制作,且支持.net下各种平台和运行库,本文通过示例介绍该如何在Wpf中使用OxyPlot。 本文使用的开发工具是Vs2019,sdk使用的是.net5 首先,使用Vs2019创建一个wpf项目,通过包管理器添加OxyPlot.Wpf依赖或者通过命令行添

    2024年02月03日
    浏览(36)
  • 第五章. 可视化数据分析图表—常用图表的绘制4—箱形图,3D图表

    第五章. 可视化数据分析图 本节主要介绍常用图表的绘制,主要包括箱形图,3D柱形图,3D曲面图。 ·箱形图又称箱线图、盒须图或盒式图 ·用于显示一组数据分散情况的统计图 ·优点:不受异常值的影响,可以以一种相对稳定的方式描述数据的离散分布情况,也常用于异常值

    2024年02月03日
    浏览(45)
  • openpyxl绘制图表

    2024年01月16日
    浏览(35)
  • Python 绘制数据图表

    matplotlib绘图库模块安装 导入pyplot子模块 官网:http://matplotlib.org 官方文档:https://matplotlib.org/stable/index.html 1.1 绘制简单的折线图 效果: 1.2 修改图表的初始值 效果: 1.3 多组数据的应用 效果: 1.4 设置线条颜色及样式 设置颜色,可在plot()中添加参数: ‘b’: blue ‘c’: cyan

    2024年02月05日
    浏览(27)
  • 【Python】绘制简单图表

    不同语言之间若要传输数据,传送过去的数据可能无法直接处理,因此规定一种格式,保证双方都能够处理,也就是 json 数据格式,一种拥有 特殊格式的字符串 ,json 数据格式和 Python 语言中的字典格式非常像。 列表转 json: 字典转 json: 将 json 字符串转 python 列表: 结合前

    2024年04月10日
    浏览(26)
  • Matplotlib可视化数据分析图表下(常用图表的绘制、折线图、柱形图、直方图、饼形图、散点图、面积图、热力图、箱形图、3D图表、绘制多个图表、双y轴可视化图表、颜色渐变图)

    本文来自《Python数据分析从入门到精通》_明日科技编著 本节介绍常用图表的绘制,主要包括绘制折线图、绘制柱形图、绘制直方图、绘制饼形图、绘制散点图、绘制面积图、绘制热力图、绘制箱型图、绘制3D图表、绘制多个子图表以及图表的保存。对于常用的图表类型以绘制

    2023年04月23日
    浏览(37)
  • 数据可视化:图表绘制详解

    数据可视化是一种将抽象的数字和数据转化为直观图形的技术,使数据的模式、趋势和关系一目了然。本文将详细介绍如何绘制各种类型的图表,包括柱状图、折线图、饼图、散点图和热力图等。 第一部分:图表类型和选择 1. 柱状图 柱状图是用于比较类别数据的常见图表。

    2024年02月12日
    浏览(52)
  • Pyecharts绘制图表大全——柱形图

    说明:本文代码资料等来源于Pyecharts官网,进行了一些重要节点的备注说明梳理,便于学习。 今日学习柱形图! 目录 百分比柱形图  x轴标签旋转  堆叠数据  动态宏观经济指标图  通过 dict 进行配置柱形图  区域选择组件配置项  区域缩放配置项  好全的工具箱!  类似于

    2024年02月05日
    浏览(46)
  • Unity中画2D图表(3)——用XChart包绘制复合图表【柱状图 + 折线图】

    绘制组合图是一种常见的需求。日常所见的组合图,比如股价走势图,上面有股价图(蜡烛图),还有趋势线(MA5,MA10,MA60等等)。 本文给定三个系列的数据,前两个系列绘制成Bar图,后一个系列绘制成Line图,其中两个Bar用的是同一个Y轴的刻度范围(Y轴1),Line图用的是另

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包