找回密码
 立即注册

QQ登录

只需一步,快速开始

workaholic
论坛元老   /  发表于:2013-6-5 13:40  /   查看:7679  /  回复:10
如何实现下面的效果



即:用饼状图显示红色部门和黄色部门分别为两种产品各自占全部的比例,请多指教!谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

10 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-5 17:34:00
沙发
workaholic 你好

针对你的需求,我写了一篇博客文章,有详细的实现代码,你可以参考:

通过代码动态创建 C1Chart 图表控件
回复 使用道具 举报
workaholic
论坛元老   /  发表于:2013-6-6 12:59:00
板凳
这是及时雨,谢谢!
回复 使用道具 举报
workaholic
论坛元老   /  发表于:2013-6-6 13:06:00
地板
不知道为什么示例代码下载不了,您在看看
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-6 13:50:00
5#
如果那个连接你无法下载,你点击这个地址吧:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
workaholic
论坛元老   /  发表于:2013-6-9 11:22:00
6#
您好,谢谢您的代码,不过还有个问题,代码中        “cds.TooltipText = "Slice {#ISERIES} ({%YVAL:0.00%})";”部分的({%YVAL:0.00%})应该是获得具体的值后算出的比例,可是我如何设置该值为某两个指定变量的比值??也就是如何根据变量比值的不同而改变图中的所占比重??谢谢
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-9 14:59:00
7#
图例的比例是根据数据源中相应字段的值来决定的,只有修改数据源才能改变饼图中各部分所占的比例。
回复 使用道具 举报
workaholic
论坛元老   /  发表于:2013-6-9 15:03:00
8#
那在程序中如何修改数据源呢?比如说:图中的红色的比例是变量 a1/a2得到的比例值,a1和a2是变量,这个值怎么在程序中赋值?谢谢
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-9 15:41:00
9#
请参考以下代码:

  1.             // 数据源
  2.             System.Collections.Generic.List<int> list = new System.Collections.Generic.List<int>();
  3.             list.Add(10);
  4.             list.Add(40);

  5.             // 创建图表系列            
  6.             ChartDataSeriesCollection cdsc = c1Chart1.ChartGroups.Group0.ChartData.SeriesList;
  7.             cdsc.Clear();

  8.             foreach (int i in list)
  9.             {
  10.                 // 指定系列的值
  11.                 ChartDataSeries cds = cdsc.AddNewSeries();
  12.                 cds.Y.Add(i);

  13.                 // 获取第一个系列的位置
  14.                 if (cds.Label == "series 0")
  15.                     cds.Offset = 30;

  16.                 if (cds.Length > 1)
  17.                     cds.PointData.Length = 1;

  18.                 // 饼图区域的透明度
  19.                 cds.FillStyle.Alpha = 50;

  20.                 // 工具提示显示的文本
  21.                 cds.TooltipText = "Slice {#ISERIES} ({%YVAL:0.00%})";

  22.                 // 为每个区域增加标签文本
  23.                 DataLabel dlab = cds.DataLabel;
  24.                 dlab.Compass = LabelCompassEnum.RadialText;
  25.                 dlab.Offset = -2;
  26.                 dlab.Text = "{%YVAL:0.00%}";
  27.                 dlab.Visible = true;
  28.             }
复制代码
回复 使用道具 举报
workaholic
论坛元老   /  发表于:2013-6-13 13:18:00
10#
你好,按照上面的代码,生成图的图标都是"series 0","series 1"等无实际意义的,我在chart中设置了具有实际意义的图标,按照您的代码修改后变成下图的样子:



我想问的是,如何修改"series 0","series 1“等这些默认的参数为有实际意义的图标标签和工具提示文本。
我修改的代码是:
// 数据源
            int maxSpace = 1000;
            int leftSpace = maxSpace - 200;
            
            System.Collections.Generic.List<int> list = new System.Collections.Generic.List<int>();
            list.Add(maxSpace);
            list.Add(leftSpace);
            c1Chart1.UseAntiAliasedGraphics = true;
            ChartGroup cg = c1Chart1.ChartGroups.Group0;

            // 设置图表类型为圆环图
            cg.ChartType = Chart2DTypeEnum.Pie;
            // 圆环图的半径
            cg.Pie.InnerRadius = 30;
            // 创建图表系列
            ChartDataSeriesCollection cdsc = cg.ChartData.SeriesList;
            foreach (int i in list)
            {
                // 指定系列的值

                ChartDataSeries cds = cdsc.AddNewSeries();
                cds.Y.Add(i);
                // 获取第一个系列的位置

                if (cds.Label == "最大使用空间")
                    cds.Offset = 30;
                if (cds.Length > 1)
                    cds.PointData.Length = 1;
                // 饼图区域的透明度

                cds.FillStyle.Alpha = 50;

                // 工具提示显示的文本

                cds.TooltipText = "Slice {#ISERIES} ({%YVAL:0.00%})";

                // 为每个区域增加标签文本

                DataLabel dlab = cds.DataLabel;

                dlab.Compass = LabelCompassEnum.RadialText;

                dlab.Offset = -2;

                dlab.Text = "{%YVAL:0.00%}";

                dlab.Visible = true;
            }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部