import namespace
- Imports System.Windows.Forms.DataVisualization.Charting
找个namespace包含用于图表 Windows 窗体控件方法和属性(如chart控件)
2. 设置chart控件
a. 在ChartArea属性里,添加ChartArea1, ChartArea2.
b. 设置align相关属性。
3. 使用代码配置ChartArea
a. 已添加ChartArea。
这种情况直接设置
- Chart1.ChartAreas(0).AxisX.Title = "Length (nt)" '设置ChartArea里坐标轴标题
- Chart1.ChartAreas(0).AxisY.Title = "Read count"
- Chart1.ChartAreas(1).AxisX.Title = "Length (nt)" '设置ChartArea里坐标轴标题
- Chart1.ChartAreas(1).AxisY.Title = "Read count"
- minValue = DateTime.Now
- '30预览区域
- maxValue = minValue.AddSeconds(30)
- Chart1.ChartAreas(0).AxisX.Minimum = minValue.ToOADate()
- Chart1.ChartAreas(0).AxisX.Maximum = maxValue.ToOADate()
- Chart1.ChartAreas(1).AxisX.Minimum = minValue.ToOADate()
- Chart1.ChartAreas(1).AxisX.Maximum = maxValue.ToOADate()
- Chart1.Series.Clear()
- Dim series1 As New Series("Read Count")
- series1.ChartType = SeriesChartType.Line '设置Series的绘图类型
- series1.BorderWidth = 1
- series1.Color = Color.Red
- series1.XValueType = ChartValueType.Time
- series1.ChartArea = "ChartArea1"
- Dim series2 As New Series("Read Count2")
- series2.ChartType = SeriesChartType.Line '设置Series的绘图类型
- series2.BorderWidth = 1
- series2.Color = Color.Blue
- series2.XValueType = ChartValueType.Time
- series2.ChartArea = "ChartArea2"
- Chart1.Series.Add(series1)
- Chart1.Series.Add(series2)
b. 未添加ChartArea
在上一段代码之前添加如下代码
- Chart1.ChartAreas.Clear() '清空ChartArea
- Dim ChartAreas1 As New ChartArea("ChartArea1") '定义新的ChartArea
- Dim ChartAreas2 As New ChartArea("ChartArea2") '定义新的ChartArea
- Chart1.ChartAreas.Add(ChartAreas1) '将新定义的ChartArea加入Chart1
- Chart1.ChartAreas.Add(ChartAreas2) '将新定义的ChartArea加入Chart1
4. 添加points
- For Each ptA In Chart1.ChartAreas
- Dim ptSeries As Series
- '对每series进行数据扫描
- For Each ptSeries In Chart1.Series
- ptSeries.Points.AddXY(x y)
- Next ptSeries
- Next
5. 动态修改X轴坐标(例如:随时间变化)
- Dim timeStamp As DateTime = DateTime.Now
- Dim removeBefore As Double = timeStamp.AddSeconds((CDbl(15) * -1)).ToOADate()
- 'remove oldest values to maintain a constant number of data points
- While ptSeries.Points(0).XValue < removeBefore
- ptSeries.Points.RemoveAt(0)
- End While
- Dim ptA As ChartArea
- For Each ptA In Chart1.ChartAreas
- ptA.AxisX.Minimum = ptSeries.Points(0).XValue
- ptA.AxisX.Maximum = DateTime.FromOADate(ptSeries.Points(0).XValue).AddSeconds(30).ToOADate()
- Next
6. 清空数据
- Chart1.Series(0).Points.Clear()
效果图