VB.Net-系列中的第一个数据点在图表上打印到错误的x值

VB.Net-系列中的第一个数据点在图表上打印到错误的x值,.net,vb.net,charts,mschart,.net,Vb.net,Charts,Mschart,我正在开发一个类来管理图表的数据系列。但是,当我添加一个新系列时,如果第一个数据点的x值为0,则它在绘图上显示为x值为1。如果我添加一个额外的数据点,它似乎会自动更正。使用下面的代码,首先调用构造函数(显然),然后初始化(使用“Series1”、0,0之类的数据),然后再调用AddPoint。有人知道发生了什么吗 编辑: 从我发现的情况来看,每当序列只有一个数据点且该数据点的x值为0时,就会发生这种情况。在添加一个(或多个)具有非零Xvalue的数据点之前,该系列也无法正常工作。我的解决方法是,

我正在开发一个类来管理图表的数据系列。但是,当我添加一个新系列时,如果第一个数据点的x值为0,则它在绘图上显示为x值为1。如果我添加一个额外的数据点,它似乎会自动更正。使用下面的代码,首先调用构造函数(显然),然后初始化(使用“Series1”、0,0之类的数据),然后再调用AddPoint。有人知道发生了什么吗

编辑: 从我发现的情况来看,每当序列只有一个数据点且该数据点的x值为0时,就会发生这种情况。在添加一个(或多个)具有非零Xvalue的数据点之前,该系列也无法正常工作。我的解决方法是,如果要添加的数据点的xValue为0,则将其xValue改为非常小(1x10^-150)。似乎有效,但在我的书中这仍然是一个奇怪的错误。我也找不到关于它的任何信息

Public Sub New(ByVal chartObj As Chart)
    'Init m_chart
    m_chart = chartObj

    m_chart.BackColor = Color.Gainsboro

    'Init Legend
    m_legend = New Legend("Legend")
    m_legend.Docking = Docking.Bottom
    m_chart.Legends.Add(m_legend)

    'Init m_chartArea

    m_chartArea = New ChartArea("Default")

    m_chartArea.BackColor = Color.Black

    m_chartArea.AxisX.LabelStyle.Format = "{0:0.00}"

    setXLimits(-10, 10)
    setYLimits(-0.5, 0.5)

    m_chartArea.AxisX.Title = "Position (mm)"
    m_chartArea.AxisX.TitleFont = New Font("Arial", 10, FontStyle.Regular)

    m_chartArea.AxisY.Title = "Peak-To-Peak (Volts)"
    m_chartArea.AxisY.TitleFont = New Font("Arial", 10, FontStyle.Regular)

    m_chartArea.AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash
    m_chartArea.AxisX.MajorGrid.LineColor = Color.DarkGreen
    m_chartArea.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash
    m_chartArea.AxisY.MajorGrid.LineColor = Color.DarkGreen

    m_chart.ChartAreas.Add(m_chartArea)

    'Init m_dataSeries
    m_dataSeries = New List(Of Series)

    'Init m_markerSeries
    m_markerSeries = New Series("Peaking Markers")
    m_markerSeries.ChartType = SeriesChartType.Point
    m_markerSeries.MarkerColor = Color.Red
    m_markerSeries.MarkerStyle = MarkerStyle.Triangle
    m_markerSeries.MarkerSize = 10
    m_chart.Series.Add(m_markerSeries)

    'Init m_title
    m_title = New Title("Plots")
    m_title.Font = New Font("Arial", 20, FontStyle.Regular)
    m_chart.Titles.Add(m_title)

End Sub

Public Sub Initialize(ByVal Legend As String, ByVal xVal As Double, ByVal yVal As Double)
    Dim temp As New Series(Legend)
    temp.ChartType = SeriesChartType.Line
    temp.Points.Clear()

    If nextAxis = "X" Then
        temp.Color = xColor
        nextAxis = "Y"
    Else
        temp.Color = yColor
        nextAxis = "X"
    End If

    temp.MarkerStyle = MarkerStyle.Circle

    m_dataSeries.Add(temp)
    m_chart.Series.Add(temp)

    AddPoint(xVal, yVal)

End Sub

Public Sub AddPoint(ByVal x As Double, ByVal y As Double)
    If m_chart.InvokeRequired Then
        m_chart.Invoke(New Action(Of Double, Double)(AddressOf AddPoint), x, y)
    Else
        Dim temp As New DataPoint(x, y)

        m_dataSeries.Item(m_dataSeries.Count - 1).Points.Add(temp)
    End If
End Sub
尝试更改此选项:

If m_chart.InvokeRequired Then
    m_chart.Invoke(New Action(Of Double, Double)(AddressOf AddPoint), x, y)
Else
    Dim temp As New DataPoint(x, y)

    m_dataSeries.Item(m_dataSeries.Count - 1).Points.Add(temp)
End If
为此:

If m_chart.InvokeRequired Then
    m_chart.Invoke(New Action(Of Double, Double)(AddressOf AddPoint), x, y)
End If

Dim temp As New DataPoint(x, y)
m_dataSeries.Item(m_dataSeries.Count - 1).Points.Add(temp)

2017年8月,.net Framework 4.5.2,仍然存在相同的错误

我创建了一个气泡图,当我添加一个点时:

Chart1.Series("MySeries").AddXY(0,0,value)
奇怪:该点显示在位置(1,0)而不是(0,0)处 但如果我加上不止一点,它是正确的

所以,我的技巧是相似的,当我只有一个点时,我加两次那个点,加上一个极小的偏移量,知道它会被真实的东西掩盖。。。 不太好,这是作弊,但它“解决”了我的问题

Chart1.Series("MySeries").AddXY(0.000001,0,0)
Chart1.Series("MySeries").AddXY(0,0,10)
任何其他建议:欢迎