C#使用dev的ChartControl控件绘图

文章介绍了如何使用Bogus生成测试数据,然后通过Demo类统计City字段出现次数,用ChartControl控件实现折线图、柱状图和饼状图的绘制,展示了详细的代码实例。

一、准备数据

画图首先需要有数据,本教程使用Bogus生成测试数据

这个教程建了一个demo类,结构如下所示:  


        public class Demo
        {
            public int? Id { get; set; }
            public string? City { get; set; }
        }

只有两个属性,一个Id,一个City

使用Bogus生成测试数据的代码如下:

            Randomizer.Seed = new Random(8675309);
            var Cities = new[] { "武汉", "长沙", "福州", "南昌", "厦门", "泉州" };
            var orderIds = 0;
            var demoGenerator = new Faker<Demo>("zh_CN")
                .RuleFor(x => x.Id, f => orderIds++)
                .RuleFor(x => x.City, f => f.PickRandom(Cities));
            var demos = demoGenerator.Generate(1000);

指定Randomizer.Seed可以使生成的测试数据不变,具体怎么使用bogus不是本文讨论的内容,暂且不表。

查看生成的内容

本教程假定需求是要统计每个City出现的次数,并绘制图表

对列表中City字段进行去重,可以使用linq中的distinct方法,如下所示:

 var regionList = demos.Select(x => x.City).Distinct().ToList();

查看regionList的结果

然后利用linq中的count方法统计每个City出现的次数,为了方便画图,这里新建了一个DataPoint类

DataPoint类的结构如下所示:

        public class DataPoint
        {
            public string? name { get; set; } // X轴值
            public int? value { get; set; }    // Y轴值
        }

统计各个City出现的次数,并写入DataPoint类列表中,代码如下所示:

            for (int i = 0; i < regionList.Count; i++)
            {
                DataPoint point = new DataPoint();
                point.name = regionList[i];
                int count = demos.Count(x => x.City == regionList[i]);
                point.value = count;
                dataPoints.Add(point);
            }
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值