找回密码
 立即注册

QQ登录

只需一步,快速开始

sheep

论坛元老

21

主题

83

帖子

2万

积分

论坛元老

积分
20121

活字格认证

sheep
论坛元老   /  发表于:2012-7-23 10:09  /   查看:10928  /  回复:11
RT,StackedBarSeries这种图表,我插入到表单的时候,有的时候是横条条,有的时候是竖条条,请问下这个通过代码怎么实现?我想要横条条的样式,如下图横条样式所示。
  1. fpSpread1.Sheets[0].AddChart(range, typeof(FarPoint.Win.Chart.StackedBarSeries), 231, 236, 0, 0,
复制代码
实现的效果的图中显示的竖条样式。
1.jpg (18.14 KB, 下载次数: 477)

11 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-23 15:55:00
沙发
你可以使用下面的代码来添加一个Stacked Bar图表:
  1.     private void Form1_Load(object sender, EventArgs e)
  2.     {
  3.         FarPoint.Win.Spread.Chart.SpreadChart chart = fpSpread1.Sheets[0].AddChart(new FarPoint.Win.Spread.Model.CellRange(0, 0, 5, 6), typeof(FarPoint.Win.Chart.StackedBarSeries), 300, 200, 0, 0);            
  4.         YPlotArea plot = chart.Model.PlotAreas[0] as YPlotArea;
  5.         plot.Vertical = false;
  6.     }
复制代码
回复 使用道具 举报
sheep
论坛元老   /  发表于:2012-7-23 16:13:00
板凳
YPlotArea命名空间是啥。。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-23 17:06:00
地板
using FarPoint.Win.Chart;
回复 使用道具 举报
sheep
论坛元老   /  发表于:2012-7-24 10:44:00
5#
我这里采用的方法是添加了一个spread控件,然后从数据库里导入数据,插入到单元格。出现了两个问题:
1.数据库里直接执行SELECT语句,结果如图1所示
图1.jpg (8.39 KB, 下载次数: 462)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-24 13:48:00
6#
sheep 你好

从你提供的信息来看,应该是D列中数据过大,而其它列数据过小导致只能看到D列的数据,你可以试着将D列数据改小,比如都在10以内,你就可以看到其它列的数据也会显示在图表中。

如有问题依然存在,可随时联系我。
回复 使用道具 举报
sheep
论坛元老   /  发表于:2012-7-24 14:11:00
7#
问题2解决了,是因为数值相差的太大了,显示效果不好。问题1继续求助。。。怎样通过代码添加XY轴的名称。
回复 使用道具 举报
sheep
论坛元老   /  发表于:2012-7-25 10:03:00
8#
好的,谢谢您!另外,spread能把两种图表样式叠加吗?如图。
1.jpg (24.88 KB, 下载次数: 405)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-25 11:38:00
9#
改变坐标显示内容的代码如下,主要是设置CategoryNames属性:
  1.     FarPoint.Win.Spread.Chart.SpreadChart chart = fpSpread1.Sheets[0].AddChart(new FarPoint.Win.Spread.Model.CellRange(0, 0, 5, 6), typeof(FarPoint.Win.Chart.StackedBarSeries), 300, 200, 0, 0);
  2.     YPlotArea plot = chart.Model.PlotAreas[0] as YPlotArea;
  3.     plot.Vertical = false;
  4.     foreach (StackedBarSeries group in chart.Model.PlotAreas[0].Series)
  5.     {
  6.         foreach (BarSeries series in group.Series)
  7.         {
  8.             series.CategoryNames.DataSource = null;
  9.             series.CategoryNames.AddRange(new string[] { "AAA", "BBB", "CCC", "DDD", "EEE" });
  10.         }
  11.     }
复制代码
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-25 11:39:00
10#
回复 9楼sheep的帖子

可以做到,你只需在Plot Area中再添加一个LineSeries类型的系列就可以了,如下图:

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