2013-11-21 7 views
1

웹 응용 프로그램에 일부 차트를 배포하려고하지만 StackedColumn 차트에 문제가 있습니다. 시리즈는 서로 겹치거나 서로 떨어져서 엇갈려있어 결과적으로 전체가 잘못 표현됩니다. 다음은 각 문제를 보여주는 두 가지 예 :ASP.net StackedColumn 차트 계열 - 겹침 및 갭

Private Sub chartMonMStack_DataBinding(sender As Object, e As System.EventArgs) Handles chartMonMStack.DataBinding 

    Dim chart As Chart = chartMonMStack 
    Dim cArea As String = "area" 

    chart.ChartAreas(cArea).Position.Width = 85 
    chart.ChartAreas(cArea).Position.Height = 100 
    chart.ChartAreas(cArea).AxisX.MajorGrid.LineColor = Drawing.ColorTranslator.FromHtml("#999999") 
    chart.ChartAreas(cArea).AxisY.MajorGrid.LineColor = Drawing.ColorTranslator.FromHtml("#999999") 
    chart.ChartAreas(cArea).AxisX.Title = "年" 
    chart.ChartAreas(cArea).AxisY.Title = "NTD" 
    chart.ChartAreas(cArea).AxisY.LabelStyle.Format = "#,##0" 

    Dim conStr As String = ConfigurationManager.ConnectionStrings("GenshenPOS").ConnectionString 
    Dim conn As New SqlConnection(conStr) 

    conn.Open() 

    Dim sql As String = "SELECT [y], [Store], SUM([amount]) AS [NTD] FROM vwMonthly " & _ 
         "WHERE [m] = '" & dropMonth.SelectedValue & "月' GROUP BY [y], [Store] ORDER BY [y], [Store]" 

    Dim sqlPoints As New SqlCommand(sql, conn) 

    Dim reader As SqlDataReader = sqlPoints.ExecuteReader() 

    While reader.Read() 

     If chart.Series.IndexOf(reader.Item("Store")) = -1 Then 

      chart.Series.Add(reader.Item("Store")) 
      chart.Legends.Add(reader.Item("Store")) 
      chart.Series(reader.Item("Store")).ChartType = SeriesChartType.StackedColumn 
      chart.Series(reader.Item("Store")).ChartArea = cArea 
      chart.Series(reader.Item("Store")).IsValueShownAsLabel = True 
      chart.Series(reader.Item("Store")).LabelFormat = "#,##0" 
      chart.Series(reader.Item("Store")).LabelForeColor = Drawing.Color.White 

     End If 

     chart.Series(reader.Item("Store")).Points.AddXY(reader.Item("y"), reader.Item("NTD")) 

    End While 

    conn.Close() 

End Sub 

내가 읽었습니다 : - - 시리즈 사이의 간격

http://sdrv.ms/1fg6LqW

http://sdrv.ms/17nzZ2k 중복 시리즈는

이 내 코드는 차트를 생성하는 것입니다 시리즈에 빈 데이터 포인트가있는 경우 데이터 누락으로 인해 갭이 발생할 수 있지만 영향을받는 열에는 누락 된 데이터 포인트가 없습니다. 또한 이것이 다른 인스턴스에서 막대가 겹쳐져 있고 차트에 올바르게 위치하지 않는 이유를 설명 할 수 있다고 생각하지 않습니다. 그럼에도 불구하고 나는 다음을 추가하려고 노력했지만 아무 소용이 없었다.

For Each s As Series In chart.Series 
    chart.DataManipulator.InsertEmptyPoints(1, IntervalType.Number, s) 
Next 

누구든지 도와 주시면 감사하겠습니다.

답변

0

InsertEmptyPoints이 문제를 해결하는 올바른 방법 이었지만 누구나 내가 한 것처럼 아무 것도하지 않는 문제가있는 경우 메서드에서 추가 매개 변수를 사용하면 문제가 해결 될 수 있습니다.

For Each s As Series In chart.Series 
    chart.DataManipulator.InsertEmptyPoints(1, IntervalType.Number, 0, IntervalType.Number, MinXAxis, MaxXAxis, s) 
Next 

는 I 값의 범위를 지정 ( toXValue) 파라미터 (I 오프셋 할 필요가 없기 때문에)에있어서의 오프셋 섹션에 0 값을 사용하는 대신 5 ( fromXValue) 및 6에 집중 내 축을 따라 변수 MinXAxis 및 MaxXAxis에는 동적으로 필요한 값이 지정됩니다.

내 시리즈의 갭과 오버랩을 모두 해결합니다. 더 많은 정보를 들어

InsertEmptyPoints 그러나 그것은 현재 fromXValuetoXValue 매개 변수에 대한 언급을하지 않습니다 통보, msdn 볼에, 나는 비주얼 스튜디오 내에서 그들에 대해 알게되었습니다.

관련 문제