tôi có một tập của loạt bài mà tôi đã tạo ra sử dụng VB.NET và DotNet.HighCharts:Sử dụng HighCharts và DotNet.HighCharts để "Play" Nhiều Dòng
Dim SeriesList4As New List(Of Series)(stfipsList4.Count)
Những gì tôi muốn có xảy ra là một cái gì đó tương tự đến http://jsfiddle.net/8M2fF/ ngoại trừ tôi muốn có thể vượt qua nhiều chuỗi mà không biết trước bao nhiêu tôi có.
Mã VB đã tạo ra ví dụ rằng ở trên là thế này:
Dim stfipsList4 = (From r In dt4.AsEnumerable() Select r("areaname")).Distinct().ToList()
Dim SeriesList4 As New List(Of Series)(stfipsList4.Count)
Dim seriesItem4(stfipsList4.Count) As Series
Dim xDate4 As DateTime
Dim fakeDate4 As String
Dim sX4 As Integer
sX4 = 1
For Each state In stfipsList4
Dim data As New Dictionary(Of DateTime, Decimal)
Dim stateVal As String = state.ToString
Dim recCount As Integer = dt4.Rows.Count - 1
Dim seriesPointCount As Integer = dt4.Compute("Count(population)", "areaname = '" + stateVal + "'")
Dim chartData As Object(,) = New Object(seriesPointCount - 1, 1) {}
Dim x As Integer = 0
For i As Integer = 0 To recCount
If dt4.Rows(i)("areaname").ToString = stateVal Then
fakeDate4 = "1/1/" + dt4.Rows(i)("periodyear").ToString
xDate4 = DateTime.Parse(fakeDate4)
chartData.SetValue(xDate4.Date, x, 0)
chartData.SetValue(dt4.Rows(i)("population"), x, 1)
x += 1
End If
Next
seriesItem4(sX4) = New Series With {
.Name = state.ToString, _
.Data = New Helpers.Data(chartData)
}
SeriesList4.Add(seriesItem4(sX4))
sX4 = sX4 + 1
Next
Dim iterateData As String = JsonSerializer.Serialize(seriesItem4(1))
Dim chart4 As Highcharts = New Highcharts("chart4").SetOptions(New Helpers.GlobalOptions() With { _
.[Global] = New [Global]() With { _
.UseUTC = False _
} _
}).InitChart(New Chart() With { _
.DefaultSeriesType = ChartTypes.Column, _
.MarginRight = 10, _
.Events = New ChartEvents() With { _
.Load = "ChartEventsLoad" _
} _
}).SetTitle(New Title() With { _
.Text = "Population" _
}).SetTooltip(New Tooltip() With { _
.Formatter = "function() { return '<b>' + this.series.name + '<br/>' + Highcharts.dateFormat('%Y', this.x) +'</b>: '+ Highcharts.numberFormat(this.y, 0, ','); }" _
}).SetXAxis(New XAxis() With { _
.Type = AxisTypes.Datetime, _
.TickPixelInterval = 150 _
}).SetYAxis(New YAxis() With { _
.Min = 0, _
.Title = New YAxisTitle() With { _
.Text = "Population", _
.Align = AxisTitleAligns.High _
} _
}).SetSeries(New Series() With { _
.Data = New Helpers.Data(New Object() {}) _
}) _
.SetOptions(New Helpers.GlobalOptions() With { _
.Colors = palette_colors _
}) _
.AddJavascripVariable("iterated", iterateData.ToString) _
.AddJavascripFunction("ChartEventsLoad", "// set up the updating of the chart each second" & vbCr & vbLf & _
" var result = iterated.data;" & vbCr & vbLf & _
" var counter = 0;" & vbCr & vbLf & _
" var series = this.series[0];" & vbCr & vbLf & _
" var loopseries = function() {" & vbCr & vbLf & _
" if (counter <= result.length) {" & vbCr & vbLf & _
" var p = String(result[counter]);" & vbCr & vbLf & _
" var splitp = p.split("","");" & vbCr & vbLf & _
" var x = Number(splitp[0]);" & vbCr & vbLf & _
" var y = Number(splitp[1]);" & vbCr & vbLf & _
" series.addPoint([x, y], true, series.points.length > 10, true);" & vbCr & vbLf & _
" counter++;" & vbCr & vbLf & _
" } else {" & vbCr & vbLf & _
" clearInterval(loopseries);" & vbCr & vbLf & _
" }};" & vbCr & vbLf & _
" setInterval(loopseries, 300);")
ltrChart4.Text = chart4.ToHtmlString()
Đây là chỉ dành riêng cho một loạt duy nhất. Tôi muốn vượt qua trong một Danh sách (Of Series). Những điều mà cần phải tham gia: Tạo số n của loạt điểm thêm cho mỗi loạt Naming mỗi loạt
tôi có thể xử lý những mặt hàng đó chỉ được đi qua trong loạt bậc thầy "danh sách" mà tôi không thể đạt được.
EDIT: Dường như có sự nhầm lẫn về những gì tôi đang yêu cầu. Tôi có thể chuyển số N tới HighCharts thông qua API DotNet.HighCharts. Những gì tôi hiện không thể làm là vượt qua cùng một loạt các loạt chức năng javascript để lặp qua và "chơi" loạt. Vui lòng xem:
.AddJavascripVariable("iterated", iterateData.ToString) _
.AddJavascripFunction("ChartEventsLoad", "// set up the updating of the chart each second" & vbCr & vbLf & _
" var result = iterated.data;" & vbCr & vbLf & _
" var counter = 0;" & vbCr & vbLf & _
" var series = this.series[0];" & vbCr & vbLf & _
" var loopseries = function() {" & vbCr & vbLf & _
" if (counter <= result.length) {" & vbCr & vbLf & _
" var p = String(result[counter]);" & vbCr & vbLf & _
" var splitp = p.split("","");" & vbCr & vbLf & _
" var x = Number(splitp[0]);" & vbCr & vbLf & _
" var y = Number(splitp[1]);" & vbCr & vbLf & _
" series.addPoint([x, y], true, series.points.length > 10, true);" & vbCr & vbLf & _
" counter++;" & vbCr & vbLf & _
" } else {" & vbCr & vbLf & _
" clearInterval(loopseries);" & vbCr & vbLf & _
" }};" & vbCr & vbLf & _
" setInterval(loopseries, 300);")
The .AddJavaScriptVariable mong đợi một chuỗi và trong dòng mã cho tôi tham chiếu đối tượng không hợp lệ.
Tôi không gặp vấn đề gì khi nhận danh sách chuỗi. Đó là những gì tôi Đối với 'Mỗi tiểu bang Trong stfipsList4' đang làm. Và tôi có thể lặp qua danh sách đó để thêm chuỗi vào biểu đồ không có vấn đề khi sử dụng phương thức mặc định. Câu hỏi này là gì để tạo hiệu ứng/phát theo chuỗi thông qua thời gian (không bị nhầm lẫn với hoạt ảnh tải mặc định HighCharts). Xem jsFiddle của tôi cho những gì tôi đã cố gắng để đạt được nhưng chỉ với 1 series. Vấn đề của tôi là tôi không chắc chắn làm thế nào để vượt qua danh sách các chuỗi chức năng javascript mà iterates và hiện series.addpoint. – wergeld
Tôi hiểu rằng câu trả lời này là giải pháp tổng quát tuyệt vời để thêm nhiều chuỗi vào HighCharts bằng cách sử dụng API DotNet.HighCharts nhưng không giải quyết được câu hỏi. Điều này có nghĩa là chỉ cần thêm tất cả chuỗi trong danh sách chuỗi cùng một lúc vào biểu đồ. Nó không phát các điểm chuỗi như được mô tả trong ví dụ jsFiddle. – wergeld
Ban đầu tôi đọc sai câu hỏi của bạn. Tôi xin lỗi. Tôi không biết tại sao mọi người lại bỏ phiếu cho nó. Đó là một cách tốt để sử dụng DotNet.Highcharts. Nhưng như bạn đã đề cập, nó không trả lời câu hỏi của bạn. – Linger