以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 生成的Histogram型图表上增加两条坚线 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=81436) |
-- 作者:漂亮美眉vszh -- 发布时间:2016/2/27 16:54:00 -- 生成的Histogram型图表上增加两条坚线 生成的Histogram型图表上增加两条坚线,分别在最左边的0.1处和最右边的99处增加,每边一条 此主题相关图片如下:22.png Dim zz As WinForm.TextBox = e.Form.Controls("TextBox6") Dim zxz As WinForm.TextBox = e.Form.Controls("TextBox8") Dim zja As WinForm.Label = e.Form.Controls("Label03") Dim zs As Double = zz.value Dim zx As Double = zxz.value Dim zj As Double = zja.text MessageBox.Show(zs) MessageBox.Show(zx) MessageBox.Show(zj) Dim Chart As WinForm.Chart \'定义一个图表变量 Dim Series As WinForm.ChartSeries \'定义一个图系变量 Chart= Forms("直方图").Controls("Chart1") \' 引用窗口中的图表 Chart.ChartType = ChartTypeEnum.Histogram \' 设置图表类型 Chart.DataSource = "生成直方图表" \'设置绑定表 Chart.SeriesList.Clear() \'清除图表原来的图系 Series = Chart.SeriesList.Add() \'增加一个图系 Series.Histogram.IntervalStart = zx \'指定起始值 Series.Histogram.IntervalWidth = zj \'指定分区宽度 Series.Histogram.IntervalNumber= zs \'指定分区个数 Series.Y.DataField = "数据" \'Y轴绑定到数量列 \'Dim Chart1 As WinForm.Chart \'定义一个图表变量 \'Dim Series1 As WinForm.ChartSeries \'定义一个图系变量 \'Chart1= Forms("直方图").Controls("Chart1") \' 引用窗口中的图表 \'Chart1.ChartType = ChartTypeEnum.Hilo \'设置图表类型 \'\'Chart.SeriesList.Clear() \'清除图表原来的图系 \'Series1 = Chart1.SeriesList.Add() \'增加一个图系 \'Series1.LineThickNess = 3 \'设置线条宽度 \'Series1.Length = 2 \'图系包括10个数据点 \'For i As Integer = 0 To 1 \'指定每个数据点的位置 \'Series1.X(i) = i \'指定水平坐标 \'Series1.Y(i) = 99 \'生成最大值 \'Series1.Y1(i) = 0.1 \'生成最小值 \'Next 这是我写的代码,测试不成功,求老师们如何解决?
|
-- 作者:大红袍 -- 发布时间:2016/2/28 13:43:00 -- 辅助线的画法可以参考。
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=55270&skin=0
|
-- 作者:漂亮美眉vszh -- 发布时间:2016/2/29 16:34:00 --
柱状图_AfterLoad \' \'设定图表数据,因为只是演示,所以数据只用人工设置 \' Dim a() As Integer = {100,90,80,85,70,80,101,105,75,66,88,110} Dim i均值 As Integer = 87.5 Dim i上限 As Integer = 100 Dim i下限 As Integer = 80 \' \'生成图表 \' Dim i As Integer Dim Chart As WinForm.Chart = e.Form.Controls("Chart1") Dim C1Cha As C1.Win.C1Chart.C1Chart = Chart.BaseControl Dim Series As WinForm.ChartSeries Chart.VisualEffect = True Chart.ChartType = ChartTypeEnum.Bar Chart.SeriesList.Clear() Series = Chart.SeriesList.Add() Series.Length = 12 Series.Text = "金额" For i = 0 To 11 Series.X(i) = i Series.Y(i) = a(i) Chart.AxisX.SetValueLabel(i, i+1 & "月") Next Chart.AxisX.AnnoWithLabels = True Chart.LegendVisible = True Chart.LegendCompass= CompassEnum.South |
-- 作者:漂亮美眉vszh -- 发布时间:2016/2/29 16:34:00 -- \' \'增加均值 \' Dim tl As C1.Win.C1Chart.TrendLine = C1Cha.ChartGroups(0).ChartData.TrendsList.AddNewTrendLine() tl.LineStyle.Color = Color.Gold \'线条颜色 tl.LineStyle.Thickness = 2 \'线宽 tl.LineStyle.Pattern = 0 \'直线样式 0-5 Dim zxb = New zxb柱状图标辅助线() zxb.SetXY(New PointF(-0.5,87.5),New PointF(11.5,87.5)) zxb.SetText("均线") tl.CustomTrendLine = zxb \' \'增加下限 \' tl = C1Cha.ChartGroups(0).ChartData.TrendsList.AddNewTrendLine() tl.LineStyle.Color = Color.red tl.LineStyle.Thickness = 2 tl.LineStyle.Pattern = 2 zxb = New zxb柱状图标辅助线() zxb.SetXY(New PointF(-0.5,80),New PointF(11.5,80)) zxb.SetText("下限") tl.CustomTrendLine = zxb
\' \'增加上限 \' 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(-0.5,i上限),New PointF(11.5,i上限)) zxb.SetText("上限") tl.CustomTrendLine = zxb
|
-- 作者:漂亮美眉vszh -- 发布时间:2016/2/29 16:35:00 -- 图表辅助线
Public Class zxb柱状图标辅助线 Implements C1.Win.C1Chart.ICustomTrendLine
Private _x() As Double Private _y() As Double
Public Sub Calculate(ByVal tl As C1.Win.C1Chart.TrendLine, ByVal x() As Double, ByVal y() As Double) Implements C1.Win.C1Chart.ICustomTrendLine.Calculate
If x Is Nothing Or x.Length = 0 Or y Is Nothing Or y.Length = 0 Then _x = Nothing _y = Nothing Return End If
_x = New Double(1) {} _y = New Double(1) {} _x(0) = _xy1.X _y(0) = _xy1.Y _x(1) = _xy2.X _y(1) = _xy2.Y
End Sub
Public Function GetXValues() As Double() Implements C1.Win.C1Chart.ICustomTrendLine.GetXValues Return _x End Function
Public Function GetYValues() As Double() Implements C1.Win.C1Chart.ICustomTrendLine.GetYValues Return _y End Function
Public Function GetY(ByVal x As Double) As Double Implements C1.Win.C1Chart.ICustomTrendLine.GetY Return 0
End Function
Public ReadOnly Property Text() As String Implements C1.Win.C1Chart.ICustomTrendLine.Text Get Return _text End Get End Property
Private _xy1 As PointF = New PointF(0, 0) Private _xy2 As PointF = New PointF(0, 0) Public Sub SetXY(ByVal xy1 As PointF, ByVal xy2 As PointF) _xy1 = xy1 _xy2 = xy2 End Sub
Private _text As String = "" Public Sub SetText(ByVal text As String) _text = text End Sub End Class
谢谢老师的分享,我的线型是竖线,他的是横线,不知道改上面的哪句代码,自己试着翻译了一下,没找到哪句是趋势线方向,麻烦老师指点下,谢谢~~ |
-- 作者:大红袍 -- 发布时间:2016/2/29 16:37:00 -- 汗,这句代码的意思是设置两个点,你明白了吗?
zxb.SetXY(New PointF(-0.5,87.5), New PointF(11.5,87.5)) |