Private Sub Form_Load()
complete = True
'波形图外观设置
With MSChart1
    .TitleText = "实时更新"
'    '设置图线的外观
    .Plot.SeriesCollection(1).Pen.Width = 30
    .Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid
    
    MSChart1.Plot.SeriesCollection(2).Pen.Width = 30
    MSChart1.Plot.SeriesCollection(2).Pen.Style = VtPenStyleSolid
    
'    '设置XY轴
    .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False
    .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False
    '// 设置最大值
    .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 20 '设置横轴标注最大值
    .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1.25 '设置纵轴标注最大值
    '// 设置最小值
    .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0.8
    .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0
    '//
    .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 20 'X轴主要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 9 'Y轴主要网格数量
    .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量
    .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted
    .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted
    MSChart1.Plot.AutoLayout = False
    MSChart1.Plot.UniformAxis = False
    MSChart1.chartType = VtChChartType2dXY '设置图形为二维散点图
End With
End Sub其他的过程设置了LISTBOX1和LISTBOX2的值都正确无误,然后是按钮的代码Private Sub PushButton3_Click()
    Dim listNum(20) As Double
 
    For i = 0 To 20
        listNum(i) = CDbl(Left(ListBox1.List(i), 4))
        MyData(i, 0) = i       【这一句不加就不显示第一条线,要显示两条线,需添加什么代码呢?】
        MyData(i, 1) = listNum(i)   
        
        listNum(i) = CDbl(Left(ListBox2.List(i), 4))
         MyData(i, 2) = listNum(i)
    Next
 
MSChart1.ChartData = MyData '数据End Sub

解决方案 »

  1.   

    这也是我困惑的地方,在Excel中能实现多条曲线,但在VB中就不行,因为VB不支持多条曲线的属性值
      

  2.   


    Sub Macro2()
    '
    ' Macro2 Macro
    ' ºêÓɠ΢ÈíÓû§ Â¼ÖÆ£¬Ê±¼ä: 2012-5-8
    ''
        Range("A1:C21").Select
        Charts.Add
        ActiveChart.ChartType = xlXYScatterSmoothNoMarkers    ActiveChart.SetSourceData Source:=Sheets("Sheet3").Range("A1:C21"), PlotBy _
            :=xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3"
        With ActiveChart
            .HasAxis(xlCategory, xlPrimary) = True
            .HasAxis(xlValue, xlPrimary) = True
        End With
        ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
    End Sub
      

  3.   

    多条曲线的绘制还是建议你使用PictureBox控件自己绘制,参考:
    http://download.csdn.net/detail/veron_04/1894278
    http://download.csdn.net/detail/veron_04/2368159
      

  4.   

    是折线,不是曲线。晕是VB,不是EXCEL啊。呵呵
      

  5.   

    我现在改了下,两个按钮都能正常把折线显示出来,就是不能同时显示。高手再看看Private Sub PushButton3_Click()
        For i = 0 To 20
            listNum(i) = CDbl(Left(ListBox1.List(i), 4))
            MyData(i, 0) = i
            MyData(i, 1) = listNum(i)
        Next
        MSChart1.ChartData = MyData '数据
    End SubPrivate Sub PushButton4_Click()
    Dim MyData2(20, 1) As Double
        For i = 0 To 20
            MyData2(i, 1) = CDbl(Left(ListBox2.List(i), 4))
            MyData2(i, 0) = i
        Next
        MSChart1.ChartData = MyData2 '数据
    End Sub
      

  6.   

    根据MSDN的示例程序,是能显示多条折线的。绑定到 MSChart 控件的数据
    Microsoft Chart 控件是一个数据绑定控件,允许您以图形方式表示数值数据。不像其他数据绑定控件,Chart 控件不能同 Remote Data 控件一起使用,也不能同 Data 控件一起使用。它可以同 ADO Data Control、ADO Recordset 以及 Data Environment 一起使用。该示例将显示如何打开一个 ADO Recordset,该 ADO Recordset 包含了您想要显示的字段,并且 Chart 控件的 DataSource 属性设置为 Recordset 对象。如果第一个字段包含字符串数据,则该数据将作为 X 轴标签使用。下面的示例显示了三组数据,先创建一个具有四个字段的 Recordset 对象;第一个字段包含 X 轴的标签,而其他的字段作为系列数据显示。Option Explicit
    ' 确保设置一个对 Microsoft ActiveX Data 
    ' Objects 2.0 Library 的引用。
    Private rsProducts As New ADODB.Recordset
    Private cn As New ADODB.ConnectionPrivate Sub Form_Load()
       Dim strQuery As String ' SQL 查询字符串。   ' 首先将路径改为到您机器的一个有效路径。
       cn.ConnectionString = _
       "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & _
       "C:\Program Files\Microsoft Visual Studio\VB98\nwind.mdb" ' <-更改该路径。   ' 打开连接。
       cn.Open 
       
       ' 创建一个只检索四个字段的查询。
       strQuery = "SELECT ProductName, UnitPrice, " & _
       "UnitsInStock, UnitsOnOrder FROM Products WHERE SupplierID = 1"
       ' 打开记录集。
       rsProducts.Open strQuery, cn, adOpenKeyset
       ' 将 DataSource 设置为该记录集。
       With MSChart1
          .ShowLegend = True
          Set .DataSource = rsProducts
       End With
    End Sub