找回密码
 立即注册

QQ登录

只需一步,快速开始

wengyz

中级会员

5

主题

17

帖子

772

积分

中级会员

积分
772

活字格认证

wengyz
中级会员   /  发表于:2013-6-17 17:56  /   查看:6359  /  回复:9
我再一个chart中想同时显示区域图和折线图,有什么办法

9 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-18 17:12:00
沙发
回复 1楼wengyz的帖子

wengyz 你好

C1Chart 内置两个 ChartGroup 对象,每个Group可以显示为不同的 ChartType,比如进行以下设置:
  1.     _c1c.ChartGroups.Group0.ChartType = Chart2DTypeEnum.Area;
  2.     _c1c.ChartGroups.Group1.ChartType = Chart2DTypeEnum.XYPlot;
复制代码


然后分别设置Group0和Group1中Series对象,以显示数据。
回复 使用道具 举报
wengyz
中级会员   /  发表于:2013-6-19 11:34:00
板凳

图片中两条线为叠加的线,为什么花圈地方有个奇怪的突起,不符合逻辑啊.
补充问一下,能不能做到我在加一条新线后两条线都只是以红线为基础叠加,而不是三条线叠加?

本帖子中包含更多资源

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

x
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-19 16:19:00
地板
回复 3楼wengyz的帖子

从你截图来看, 可能是垂直处的数据有问题, 下面是我的代码, 你可以测试一下:
  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             _c1c.ChartGroups.Group0.ChartType = Chart2DTypeEnum.XYPlot;

  4.             System.Data.DataTable data = new DataTable();
  5.             data.Columns.Add("Name");
  6.             data.Columns.Add("UnitsInStock", typeof(System.Int32));
  7.             data.Columns.Add("ReorderLevel", typeof(System.Int32));

  8.             data.Rows.Add("产品1", 20, 1);
  9.             data.Rows.Add("产品2", 12, 2);
  10.             data.Rows.Add("产品3", 16, 3);
  11.             data.Rows.Add("产品4", 24, 3);
  12.             data.Rows.Add("产品5", 22, 2);
  13.             data.Rows.Add("产品6", 18, 3);
  14.             data.Rows.Add("产品7", 25, 1);

  15.             _c1c.Legend.Visible = true;
  16.             _c1c.ChartArea.AxisY.Text = "单价";
  17.             _c1c.ChartArea.AxisY2.Text = "数量";

  18.             C1.Win.C1Chart.ChartDataSeriesCollection dscoll = null;

  19.             // 创建系列对象
  20.             dscoll = _c1c.ChartGroups[0].ChartData.SeriesList;
  21.             dscoll.Clear();

  22.             C1.Win.C1Chart.ChartDataSeries series = null;
  23.             
  24.             // 库存量
  25.             series = dscoll.AddNewSeries();
  26.             series.Label = "库存";
  27.             series.SymbolStyle.Color = Color.Green;
  28.             series.LineStyle.Pattern = LinePatternEnum.Solid;
  29.             series.PointData.Length = data.Rows.Count;
  30.             for (int i = 0; i < data.Rows.Count; i++)
  31.             {
  32.                 series.X[i] = i;
  33.                 series.Y[i] = data.Rows[i]["UnitsInStock"];
  34.             }

  35.             // 再订购量
  36.             series = dscoll.AddNewSeries();
  37.             series.Label = "再订购量";
  38.             series.SymbolStyle.Color = Color.Red;
  39.             series.LineStyle.Pattern = LinePatternEnum.Solid;
  40.             series.PointData.Length = data.Rows.Count;
  41.             for (int i = 0; i < data.Rows.Count; i++)
  42.             {
  43.                 series.X[i] = i;
  44.                 series.Y[i] = data.Rows[i]["ReorderLevel"];
  45.             }

  46.             _c1c.ChartArea.AxisY2.GridMajor.Visible = true;

  47.         }
复制代码


此外, 从以上截图不能完全确定问题的原因, 要是方便的话你可以发个工程给我调试.
回复 使用道具 举报
wengyz
中级会员   /  发表于:2013-6-19 18:27:00
5#
能不能做到我在加一条新线后两条线都只是以红线为基础叠加,而不是三条线叠加?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-20 16:37:00
6#
回复 5楼wengyz的帖子

C1Chart无法实现该需求,同一个图表Group中的系列都会一层一层堆积,不能都以一个系列为基准进行堆积。
回复 使用道具 举报
wengyz
中级会员   /  发表于:2013-6-21 15:42:00
7#
都搞定了。自己写代码差分计算的。效果和你们的一样
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-6-21 16:16:00
8#
回复 7楼wengyz的帖子

修改的数据源?
回复 使用道具 举报
wengyz
中级会员   /  发表于:2013-7-1 10:30:00
9#
对。就是这么做的
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-7-1 17:58:00
10#
谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部