文档章节

C#学习 - 使用 MS Chart 绘制饼图和圆环图

北风其凉
 北风其凉
发布于 2016/03/17 23:40
字数 680
阅读 2214
收藏 2

这几天我决定花一些时间,逐个研究下.NET中的Chart控件。

我的IDE版本为VS2012,.NET框架版本为.NET 4.5

运行本文代码需要用到命名空间System.Windows.Forms.DataVisualization.Charting


1、饼图(SeriesChartType.Pie)

现有一个Chart控件,取名为chart,在程序Load函数中输入如下代码:

private void FormMain_Load(object sender, EventArgs e)
{
    //清空chart图表
    chart.ChartAreas.Clear(); //图表区
    chart.Titles.Clear(); //图表标题
    chart.Series.Clear(); //图表序列
    chart.Legends.Clear(); //图表图例

    //新建chart图表要素
    chart.ChartAreas.Add(new ChartArea("chartArea"));
    chart.ChartAreas["chartArea"].AxisX.IsMarginVisible = false;
    chart.ChartAreas["chartArea"].Area3DStyle.Enable3D = false;
    chart.Titles.Add("某行业各公司市场占有率调查报告"); //标题
    chart.Titles[0].Font = new Font("宋体", 20);
    chart.Series.Add("data");
    chart.Series["data"].ChartType = SeriesChartType.Pie; //图标类型
    chart.Series["data"]["PieLabelStyle"] = "Outside";
    chart.Series["data"]["PieLineColor"] = "Black";
    chart.Legends.Add(new Legend("legend"));
    chart.Palette = ChartColorPalette.BrightPastel;

    //为chart图表赋值
    //点1
    int idxA = chart.Series["data"].Points.AddY(20);
    DataPoint pointA = chart.Series["data"].Points[idxA];
    pointA.Label = "甲公司";
    pointA.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点2
    int idxB = chart.Series["data"].Points.AddY(15);
    DataPoint pointB = chart.Series["data"].Points[idxB];
    pointB.Label = "乙公司";
    pointB.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点3
    int idxC = chart.Series["data"].Points.AddY(30);
    DataPoint pointC = chart.Series["data"].Points[idxC];
    pointC.Label = "丙公司";
    pointC.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点4
    int idxD = chart.Series["data"].Points.AddY(30);
    DataPoint pointD = chart.Series["data"].Points[idxD];
    pointD.Label = "丁公司";
    pointD.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点5
    int idxE = chart.Series["data"].Points.AddY(85);
    DataPoint pointE = chart.Series["data"].Points[idxE];
    pointE.Label = "戊公司";
    pointE.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
}

绘制好的图像,效果如下:

将ChartArea的属性Area3DStyle.Enable3D改为true,效果如下:

2、圆环图(SeriesChartType.Doughnut)

图表控件的标识符还用chart不变:

private void FormMain_Load(object sender, EventArgs e)
{
    //清空chart图表
    chart.ChartAreas.Clear(); //图表区
    chart.Titles.Clear(); //图表标题
    chart.Series.Clear(); //图表序列
    chart.Legends.Clear(); //图表图例

    //新建chart图表要素
    chart.ChartAreas.Add(new ChartArea("chartArea"));
    chart.ChartAreas["chartArea"].AxisX.IsMarginVisible = false;
    chart.ChartAreas["chartArea"].Area3DStyle.Enable3D = false;
    chart.Titles.Add("某行业各公司市场占有率调查报告");
    chart.Titles[0].Font = new Font("宋体", 20);
    chart.Series.Add("data");
    chart.Series["data"].ChartType = SeriesChartType.Doughnut; //这一行与上个例子不同
    chart.Series["data"]["PieLabelStyle"] = "Outside";
    chart.Series["data"]["PieLineColor"] = "Black";
    chart.Legends.Add(new Legend("legend"));
    chart.Palette = ChartColorPalette.BrightPastel;

    //为chart图表赋值
    //点1
    int idxA = chart.Series["data"].Points.AddY(20);
    DataPoint pointA = chart.Series["data"].Points[idxA];
    pointA.Label = "甲公司";
    pointA.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点2
    int idxB = chart.Series["data"].Points.AddY(15);
    DataPoint pointB = chart.Series["data"].Points[idxB];
    pointB.Label = "乙公司";
    pointB.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点3
    int idxC = chart.Series["data"].Points.AddY(30);
    DataPoint pointC = chart.Series["data"].Points[idxC];
    pointC.Label = "丙公司";
    pointC.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点4
    int idxD = chart.Series["data"].Points.AddY(30);
    DataPoint pointD = chart.Series["data"].Points[idxD];
    pointD.Label = "丁公司";
    pointD.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
    //点5
    int idxE = chart.Series["data"].Points.AddY(85);
    DataPoint pointE = chart.Series["data"].Points[idxE];
    pointE.Label = "戊公司";
    pointE.LegendText = "#LABEL(#VAL) #PERCENT{P2}";
}

绘制好的图像,效果如下:

将ChartArea的属性Area3DStyle.Enable3D改为true,效果如下:

注意:

1、MS Chart支持的绘图种类可以参考:

https://msdn.microsoft.com/library/system.web.ui.datavisualization.charting.seriescharttype.aspx

2、除了IDE中所见即所得的编辑可修改的部分外,Chart还有一些自定义属性,详见页面:

https://msdn.microsoft.com/zh-cn/library/dd456764

END

© 著作权归作者所有

北风其凉

北风其凉

粉丝 119
博文 498
码字总数 463468
作品 4
朝阳
程序员
私信 提问
C# WinForm开发系列之c# 通过.net自带的chart控件绘制饼图,柱形图和折线图的基础使用和扩展

一.需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图。 2.生成的饼图有详细文字的说明。 1.设置chart1的属性Legends中默认的Legend1的Enable为false; 如图1所示: 图1 2.设...

dannyiscoder
2017/04/18
0
0
【更新】Essential Studio for UWP 2018 v4发布

下载Essential Studio for UWP最新版本 Essential Studio for UWP是包含有60 +组件的综合套包,包括最快的图表和网格组件。所有组件根据当前被呈现的设备系列自适应渲染。 DATAGRID 自动生成...

电池盒
01/07
0
0
5个最好的开源Javascript图表库

  在这篇文章中,我向大家介绍前5名最好的开源JavaScript图表库。每个站点的仪表板都是不完整的,因为他们缺少图表,所以为我们的站点找到正确的图表库是非常重要的。以下库可以帮助你在站...

webstack前端栈
2017/12/22
0
0
报表开发工具中开放的部分图表js接口列表

1.. 描述 报表开发工具FineReport 8.0版本中开放了部分图表js接口,在具体应用的过程中很多人都不知道这些接口到底有什么作用,该怎么应用,所以根据我自己的应用在下面归纳了这些新开放js接...

九月你好123
2015/11/13
0
0
微信小程序图表工具 - wx-charts

基于 canvas 绘制、体积小巧的微信小程序图表工具。 支持图表类型 饼图 圆环图 线图 柱状图 区域图 雷达图 如何使用 1、直接引用编译好的文件 或者 2、自行编译 git clone https://github.c...

匿名
2018/04/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

二进制位操作

单片机,或者一些模块的设置操作,都是由一个字节数据来完成,每位各有定义。就需进行位操作来组合需要的数字结果。 以JavaScript为例,编写位操作。 我们期望得到这样一个二进制数:0101101...

format
18分钟前
2
0
聊聊中国的通信行业:从“七国八制”到“中华”脊梁

本期文章和大家一起来聊一聊我曾经从事过的通信行业吧。最近各方面信息的泛滥,包括和华为的同学聊天,自己确实也感慨颇多。想想我自己本科主修通信工程,研究生再修信息与通信工程,从本科开...

CodeSheep
今天
6
0
MDK:ARM M451M:exceed the range of code meory, continue to erase or not?

问题: 代码空间超限 几天前就遇到:exceed the range of code meory, continue to erase or not? 如下所示: 解决过程 开始以为中MDK软件的128KB限制,如是就不能生成HEX文件,应该链接时有提...

SamXIAO
今天
1
1
OSChina 周六乱弹 —— 因违反《中华人民共和国治安管理处罚法》第四十四条之规定

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :#今日歌曲推荐# 惊艳分享谷微的单曲《安守本份》(@网易云音乐) 《安守本份》- 谷微 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
495
11
Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部