Foxtable(狐表)用户栏目专家坐堂 → [求助]如何定义图表上限辅助线?


  共有2668人关注过本帖树形打印复制链接

主题:[求助]如何定义图表上限辅助线?

帅哥哟,离线,有人找我吗?
wendude
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:349 积分:3600 威望:0 精华:0 注册:2014/4/11 16:05:00
[求助]如何定义图表上限辅助线?  发帖心情 Post By:2016/3/7 11:58:00 [只看该作者]

之前学习了逛逛老师的辅助线代码:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=55270

想增加一个“shuru"控件,动态定义上限,可以实现了,但是想请教一下,这句代码的X轴想用图表原来的轴坐标,不是固定的,怎么实现?

代码: 

zxb.SetXY(New PointF(-0.5,pl),New PointF(11.5,pl))

,其中pl为定义的Y轴的值。

代码:

Dim Chart  As WinForm.Chart  '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table =  Tables("数据同步(西)_Table1") '定义一个变量t引用数据表
'Chart.ChartType = ChartTypeEnum.Bar  '图表类型改为Bar(条形)
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar  '设置图表类型 
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系
Chart.AxisX.DateType = True  'X轴是日期型
Chart.AxisX.AnnoFormatString = "yy-MM" '只显示日
Series.Length = t.Rows.Count  '图系的数据点数等于表的行数
For i As Integer =  0  To t.Rows.Count -  1  '指定每个数据点的位置
    Series.X(i) = t.Rows(i)("定检时间")  '指定水平坐标
    Series.Y(i) = t.Rows(i)("整机运行时间") '指定垂直坐标
Next
Series.DataLabelText = "{#YVAL}"
Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
'增加上限,根据shuru1的值
Dim C1Cha As C1.Win.C1Chart.C1Chart = Chart.BaseControl
Dim zxb = New zxb柱状图标辅助线()
Dim tl As C1.Win.C1Chart.TrendLine =  C1Cha.ChartGroups(0).ChartData.TrendsList.AddNewTrendLine()
Dim pl As Integer = e.Form.Controls("shuru1").Value
tl  =  C1Cha.ChartGroups(0).ChartData.TrendsList.AddNewTrendLine()
tl.LineStyle.Color = Color.BurlyWood   
tl.LineStyle.Thickness = 2             
tl.LineStyle.Pattern = 2
zxb = New zxb柱状图标辅助线()

zxb.SetXY(New PointF(1000,pl),New PointF(1000,pl))
zxb.SetText("上限")
tl.CustomTrendLine = zxb


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/7 12:14:00 [只看该作者]

这个意思?

 

zxb.SetXY(New PointF(-0.5,pl),New PointF(Series.Length,pl))


 回到顶部
帅哥哟,离线,有人找我吗?
逛逛
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2016/3/7 12:18:00 [只看该作者]

如果你没有移动或缩放的话,不用去管他

 

-0.5只是指在第一个条形图的位置的基础上再向左偏移半个位置

 

11.5指在第十二个条形图的位置基础上再向右偏移半个位置(你只要在这里换成你条形图的个数-0.5就行了)


 回到顶部
帅哥哟,离线,有人找我吗?
wendude
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:349 积分:3600 威望:0 精华:0 注册:2014/4/11 16:05:00
图表辅助线上限值超过垂直坐标最高值,如何显示出来?  发帖心情 Post By:2016/3/12 17:26:00 [只看该作者]

感谢老师的指导,再请教一下,如何i上限超过了110(即垂直坐标最高值),如何显示?谢谢老师!

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/14 14:03:00 [只看该作者]

 不明白你的意思,上传具体例子说明。

 回到顶部
帅哥哟,离线,有人找我吗?
wendude
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:349 积分:3600 威望:0 精华:0 注册:2014/4/11 16:05:00
具体例子  发帖心情 Post By:2016/3/14 19:27:00 [只看该作者]

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=55270&replyID=&skin=1
这是例子。
想要实现:i上限=150在图上能够显示出来。如何实现?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/14 20:04:00 [只看该作者]

只需要设置max的值大于150即可。

 

chart.AxisY.Max = 150


 回到顶部