zoukankan      html  css  js  c++  java
  • 图表控件MsChart使用demo

    chart 控件主要有 Titles 标题集合  Chart Area图形显示区域 Series图表集合 Legends图列的集合

    (1)  常用事件:

    1. Series1.Points.DataBind()绑定数据点集合,如果要在一个MSChart控件的一个绘图区(ChartArea)内添加多个不同数据源的图表,就用这个主动绑定数据集合的方法。可以将表中指定字段的值绑定到指定的坐标轴上。

    2. MSChart1.DataBind()给整个MSChart绑定一个数据源,该MSChart中的图表全部可以使用该数据源作为统计来源

    (2)MSChart的元素组成,最常用的属性包括:

    ChartAreas:增加多个绘图区域,每个绘图区域包含独立的图表组、数据源,用于多个图表类型在一个绘图区不兼容时。

    AlignmentOrientation:图表区对齐方向,定义两个绘图区域间的对齐方式。

    AlignmentStyle:图表区对齐类型,定义图表间用以对其的元素。

    AlignWithChartArea:参照对齐的绘图区名称。

    InnerPlotPosition:图表在绘图区内的位置属性。

    Auto:是否自动对齐。

    Height:图表在绘图区内的高度(百分比,取值在0-100)

    Width:图表在绘图区内的宽度(百分比,取值在0-100)

    X,Y:图表在绘图区内左上角坐标

    Position:绘图区位置属性,同InnerPlotPosition。

    Name:绘图区名称。

    Axis:坐标轴集合

    Title:坐标轴标题

    TitleAlignment:坐标轴标题对齐方式

    Interval:轴刻度间隔大小

    IntervalOffset:轴刻度偏移量大小

    MinorGrid:次要辅助线

    MinorTickMark:次要刻度线

    MajorGrid:主要辅助线

    MajorTickMark:主要刻度线

    DataSourceID:MSChart的数据源。

    Legends:图例说明。

    Palette:图表外观定义。

     

    (3)Series:最重要的属性,图表集合,就是最终看到的饼图、柱状图、线图、点图等构成的集合;可以将多种相互兼容的类型放在一个绘图区域内,形成复合图。

    IsValueShownAsLabel:是否显示数据点标签,如果为true,在图表中显示每一个数据值

    Label:数据点标签文本

    LabelFormat:数据点标签文本格式

    LabelAngle:标签字体角度

    Name:图表名称

    Points:数据点集合

    XValueType:横坐标轴类型

    YValueType:纵坐标轴类型

    XValueMember:横坐标绑定的数据源(如果数据源为Table,则填写横坐标要显示的字段名称)

    YValueMembers:纵坐标绑定的数据源(如果数据源为Table,则填写纵坐标要显示的字段名称,纵坐标可以有两个)

    ChartArea:图表所属的绘图区域名称

    ChartType:图表类型(柱形、饼形、线形、点形等)

    Legend:图表使用的图例名称

    Titles:标题集合。

    width:MSChart的宽度。

    height:MSChart的高度。

    4.例子

    Public Class Form1
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim dt As DataTable
            dt = CreateDataTable()
    
            SetMSChartStyle()
            ConvertChart(dt)
    
            'databind
            Chart1.DataBind()
        End Sub
    
        Private Function CreateDataTable() As DataTable
            Dim dt As New DataTable
            'Add three columns to the DataTable
            dt.Columns.Add("Date") 'X
            dt.Columns.Add("Series1") 'data1
            dt.Columns.Add("Series2") 'data2
            dt.Columns.Add("Series3") 'data1
            dt.Columns.Add("Series4") 'data2
            dt.Columns.Add("Series5") 'data1
            dt.Columns.Add("Series6") 'data2
    
            Dim dr As DataRow
            'Add rows to the table which contains some random data for demonstration
            Dim rnd As New Random
            Dim i As Double
            For i = 10 To 24 Step 0.2
                dr = dt.NewRow()
                dr("Date") = i
                dr("Series1") = 3731 + rnd.Next(0, 1000)
                dr("Series2") = 4101 + rnd.Next(0, 1000)
                dr("Series3") = 3600 + rnd.Next(0, 1000)
                dr("Series4") = 4765 + rnd.Next(0, 1000)
                dr("Series5") = 3742 + rnd.Next(0, 1000)
                dr("Series6") = 4321 + rnd.Next(0, 1000)
                dt.Rows.Add(dr)
            Next
    
            CreateDataTable = dt
        End Function
    
        Private Sub ConvertChart(dt As DataTable)
            For Each dr As DataRow In dt.Rows
                Dim s As Double = dr("Date")
                Chart1.Series("Series1").Points.AddXY(s, dr("Series1"))
                Chart1.Series("Series2").Points.AddXY(s, dr("Series2"))
                Chart1.Series("Series3").Points.AddXY(s, dr("Series3"))
                Chart1.Series("Series4").Points.AddXY(s, dr("Series4"))
                Chart1.Series("Series5").Points.AddXY(s, dr("Series5"))
                Chart1.Series("Series6").Points.AddXY(s, dr("Series6"))
            Next
        End Sub
    
    
        '/ <summary>
        '/ 设置mschart样式
        '/ </summary>
        Private Sub SetMSChartStyle()
            ' 坐标轴设置
            Chart1.ChartAreas(0).AxisY.IsMarginVisible = False
            Chart1.ChartAreas(0).AxisY.LabelStyle.Enabled = False
            Chart1.ChartAreas(0).AxisX.IsMarginVisible = False
            Chart1.ChartAreas(0).AxisX.LabelStyle.Enabled = False
    
            '设置当前X轴Label自动设置格式 = 关闭
            Chart1.ChartAreas(0).AxisX.LabelAutoFitStyle = DataVisualization.Charting.LabelAutoFitStyles.None
    
            ''设置当前X轴Label的双行显示格式= 关闭,这个会影响到Y轴线条的显示
            Chart1.ChartAreas(0).AxisX.LabelStyle.IsStaggered = False
            ''.设置当前X轴Label的显示间隔周期=1 (1个项目) (=2的意思: 间隔2个项目显示...以此类推)
            'Chart1.ChartAreas(0).AxisX.LabelStyle.Interval = 1
            'X 轴坐标最大最小值
            Chart1.ChartAreas(0).AxisX.Minimum = 0
            Chart1.ChartAreas(0).AxisX.Maximum = 24
    
            'X 轴坐标最大最小值
            Chart1.ChartAreas(0).AxisY.Minimum = 0
            Chart1.ChartAreas(0).AxisY.Maximum = 5000
    
            ' 坐标轴刻度线不延长出来设置
            Chart1.ChartAreas(0).AxisX.MajorTickMark.Enabled = False
            Chart1.ChartAreas(0).AxisY.MajorTickMark.Enabled = False
    
            'X 次要辅助线设置
            Chart1.ChartAreas(0).AxisX.MinorGrid.Enabled = True
            'X 次要辅助线间距
            Chart1.ChartAreas(0).AxisX.MinorGrid.Interval = 0.5
            'X 次要辅助线颜色
            Chart1.ChartAreas(0).AxisX.MinorGrid.LineColor = Color.LightGray
            Chart1.ChartAreas(0).AxisX.MinorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Dash
    
            'Y 次要辅助线设置
            Chart1.ChartAreas(0).AxisY.MinorGrid.Enabled = True
            'Y 次要辅助线间距
            Chart1.ChartAreas(0).AxisY.MinorGrid.Interval = 500
            'Y 次要辅助线颜色
            Chart1.ChartAreas(0).AxisY.MinorGrid.LineColor = Color.LightGray
            Chart1.ChartAreas(0).AxisY.MinorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Dash
    
            'X 主要辅助线设置
            Chart1.ChartAreas(0).AxisX.MajorGrid.Enabled = True
            'X 主要辅助线间距
            Chart1.ChartAreas(0).AxisX.MajorGrid.Interval = 5
            'X 主要辅助线颜色
            Chart1.ChartAreas(0).AxisX.MajorGrid.LineColor = Color.Black
            Chart1.ChartAreas(0).AxisX.MajorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Solid
    
            'Y 主要辅助线设置
            Chart1.ChartAreas(0).AxisY.MajorGrid.Enabled = True
            'Y 主要辅助线间距
            Chart1.ChartAreas(0).AxisY.MajorGrid.Interval = 1000
            'Chart1.ChartAreas(0).AxisY.MajorGrid.IntervalOffset = 1000
            'Y 主要辅助线颜色
            Chart1.ChartAreas(0).AxisY.MajorGrid.LineColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(64, Byte), Integer))
            Chart1.ChartAreas(0).AxisY.MajorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Solid
    
            '坐标主要辅助线刻度间距
            Chart1.ChartAreas(0).AxisX.Interval = 1
            Chart1.ChartAreas(0).AxisY.Interval = 1000
    
            '边框样式设置
            Chart1.ChartAreas(0).BorderColor = Color.Black
            Chart1.ChartAreas(0).BorderDashStyle = DataVisualization.Charting.ChartDashStyle.Solid
            Chart1.ChartAreas(0).BorderWidth = 1
    
            '图例文字
            'Chart1.Series["Series"].LegendText = "当前"
    
            '图例位置、字体设置;坐标轴位置设定
            'Chart1.Legends[0].Position = new ElementPosition(10, 10, 88, 7)
            'Chart1.Legends[0].Font = new Font("宋体", 9)
            'Chart1.ChartAreas[0].InnerPlotPosition = new ElementPosition(1, 1, 1, 1)
        End Sub
    
    
        Private Sub CmbYMax_SelectedValueChanged(sender As Object, e As EventArgs) Handles CmbYMax.SelectedValueChanged
            Chart1.ChartAreas(0).AxisY.Maximum = CmbYMax.Text
        End Sub
    
        Private Sub CmbYMin_SelectedValueChanged(sender As Object, e As EventArgs) Handles CmbYMin.SelectedValueChanged
            Chart1.ChartAreas(0).AxisY.Minimum = CmbYMin.Text
        End Sub
    
        Private Sub CmbXMin_SelectedValueChanged(sender As Object, e As EventArgs) Handles CmbXMin.SelectedValueChanged
            Chart1.ChartAreas(0).AxisX.Minimum = Convert.ToDouble(CmbXMin.Text)
        End Sub
    
        Private Sub CmbXMax_SelectedValueChanged(sender As Object, e As EventArgs) Handles CmbXMax.SelectedValueChanged
            Chart1.ChartAreas(0).AxisX.Maximum = Convert.ToDouble(CmbXMax.Text)
        End Sub
    
        Private Sub CheckBox_1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_1.CheckedChanged, CheckBox_6.CheckedChanged, CheckBox_5.CheckedChanged, CheckBox_4.CheckedChanged, CheckBox_3.CheckedChanged, CheckBox_2.CheckedChanged
            If (sender.Name.Split("_").length = 2) Then
                Dim seriesName As String = "Series" + sender.Name.Split("_")(1)
                If sender.Checked = True Then
                    Chart1.Series(seriesName).Enabled = True
                Else
                    Chart1.Series(seriesName).Enabled = False
                End If
            End If
        End Sub
    End Class
  • 相关阅读:
    轻松搞定技术面系列 1——基础篇
    Java集合排序(看完秒懂)
    详解 jupyter notebook 集成 spark 环境安装
    Java——观察者模式实例
    Java——泛型(最易懂的方式讲解泛型)
    Linux目录
    Python目录
    Nginx入门与实战
    数组与链表
    图算法之——dijkstra算法
  • 原文地址:https://www.cnblogs.com/zhao123/p/4889514.html
Copyright © 2011-2022 走看看