Foxtable(狐表)用户栏目专家坐堂 → 生成的Histogram型图表上增加两条坚线


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

主题:生成的Histogram型图表上增加两条坚线

美女呀,离线,留言给我吧!
漂亮美眉vszh
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
生成的Histogram型图表上增加两条坚线  发帖心情 Post By:2016/2/27 16:54:00 [只看该作者]

生成的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
这是我写的代码,测试不成功,求老师们如何解决?

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


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


 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By: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

 

谢谢老师的分享,我的线型是竖线,他的是横线,不知道改上面的哪句代码,自己试着翻译了一下,没找到哪句是趋势线方向,麻烦老师指点下,谢谢~~


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


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

汗,这句代码的意思是设置两个点,你明白了吗?

 

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


 回到顶部