vb.net图表,周数为X轴

时间:2015-01-19 19:38:47

标签: vb.net charts axis-labels

我知道之前曾问过类似的问题,但没有回答。 我有一个图表,我使用周数作为X轴,作为SQL查询的一部分检索。

直到新的一年开始它才能正常工作。在这种情况下,即使在检索时正确订购周数(例如,49,50,51,52,1,2,3),它们也会按数字顺序出现在轴上:1,2,3,49,50 ,51,52。

有没有办法解决这个问题?

相关的sql查询部分是:

SELECT DATEPART(year, start_charge_time),
       DATEPART(week, start_charge_time) week_num,
       COUNT(*) num_sessions
  FROM parking_log
GROUP BY DATEPART(year, start_charge_time),
         DATEPART(week, start_charge_time)
ORDER BY DATEPART(year, start_charge_time),
         DATEPART(week, start_charge_time)

图表是:

    Dim SeriesParkingRev As Series
    SeriesParkingRev = ChartParkingSummery.Series("SeriesParkingRev")

    ' Set series chart type
    SeriesParkingRev.ChartType = SeriesChartType.Line
    SeriesParkingRev.MarkerStyle = MarkerStyle.Square
    SeriesParkingRev.MarkerSize = 10
    SeriesParkingRev.BorderWidth = 3
    SeriesParkingRev.Color = Color.Red
    SeriesParkingRev.IsValueShownAsLabel = True
    SeriesParkingRev.IsVisibleInLegend = True
    '' Set series members names for the X and Y values 
    SeriesParkingRev.XValueMember = "week_num"
    SeriesParkingRev.YValueMembers = "total_charge"
    SeriesParkingRev.LegendText = "Parking Revenue"

    '' --------------------------

    ' Create the destination series and add it to the chart
    'Dim SeriesParkingTime As New Series("SeriesParkingTime")
    'ChartParkingSummery.Series.Add(SeriesParkingTime)

    Dim SeriesParkingTime As Series
    SeriesParkingTime = ChartParkingSummery.Series("SeriesParkingTime")

    ' Ensure the destination series is a Line or Spline chart type
    SeriesParkingTime.ChartType = SeriesChartType.Line
    SeriesParkingTime.MarkerStyle = MarkerStyle.Diamond
    SeriesParkingTime.MarkerSize = 12
    SeriesParkingTime.BorderWidth = 3
    SeriesParkingTime.IsValueShownAsLabel = True
    SeriesParkingTime.Color = Color.Blue

    ' Assign the series to the same chart area as the column chart
    SeriesParkingTime.ChartArea = ChartParkingSummery.Series("SeriesParkingRev").ChartArea

    ' Assign this series to use the secondary axis and set its maximum to be 100%
    SeriesParkingTime.YAxisType = AxisType.Secondary

    ChartParkingSummery.Series("SeriesParkingTime").XValueMember = "week_num"
    ChartParkingSummery.Series("SeriesParkingTime").YValueMembers = "avg_time"
    ChartParkingSummery.Series("SeriesParkingTime").LegendText = "Average Time"

    '' ----------------------------------------

    'Dim SeriesCars As New Series("SeriesCars")
    'ChartParkingSummery.Series.Add(SeriesCars)

    Dim SeriesCars As Series
    SeriesCars = ChartParkingSummery.Series("SeriesCars")

    SeriesCars.ChartType = SeriesChartType.Point
    SeriesCars.MarkerStyle = MarkerStyle.Triangle
    SeriesCars.MarkerSize = 8
    SeriesCars.BorderWidth = 3
    SeriesCars.IsValueShownAsLabel = True

    SeriesCars.MarkerStyle = MarkerStyle.Triangle
    SeriesCars.MarkerSize = 15
    SeriesCars.MarkerColor = Color.Green

    ChartParkingSummery.Series("SeriesCars").XValueMember = "week_num"
    ChartParkingSummery.Series("SeriesCars").YValueMembers = "num_cars"
    ChartParkingSummery.Series("SeriesCars").LegendText = "Cars"

    '' ----------------------------------------

    ChartParkingSummery.Legends.Add(New Legend("Default"))

    ' Set legend style
    ChartParkingSummery.Legends("Default").LegendStyle = LegendStyle.Table

    ' Set table style if legend style is Table

    ' Set legend docking
    ChartParkingSummery.Legends("Default").Docking = Docking.Right

    ' Set legend alignment
    ChartParkingSummery.Legends("Default").Alignment = StringAlignment.Center

    ChartParkingSummery.Titles.Add("Revenue, Avg Time & Cars")

0 个答案:

没有答案