내가 VB.NET과 DotNet.HighCharts를 사용하여 만든 시리즈의 세트가 여러 "재생"하기 :HighCharts 및 DotNet.HighCharts를 사용하여 시리즈
Dim SeriesList4As New List(Of Series)(stfipsList4.Count)
내가 일해야 할 것은 비슷한입니다 내가 얼마나 많은 손을 가지고 있는지를 알지 못하고 여러 시리즈를 통과 할 수 있기를 원하는 점을 제외하고는 http://jsfiddle.net/8M2fF/까지.
위의 그 예를 만든 VB 코드는 이것이다 :
는 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()
이것은 단지 하나의 시리즈입니다. List (Of Series)를 전달하고 싶습니다. 참여해야 것들 : 는 각 시리즈
나는 그냥 내가 달성 할 수없는 마스터 시리즈 "목록"에 전달하고 해당 항목을 처리 할 수있는 명명 각 시리즈 에 일련의 추가 점을 n 개의 만들기.
편집 : 내가 묻는 것에 약간의 혼란이있는 것 같습니다. DotNet.HighCharts API를 통해 N 개의 시리즈를 HighCharts에 전달할 수 있습니다. 내가 현재 할 수없는 것은 시리즈를 반복하고 시리즈를 재생하는 자바 스크립트 함수에이 같은 일련의 세트를 전달하는 것입니다. 참조하십시오
이 .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);")
.AddJavaScriptVariable 문자열을 기대하고에 - 안감 코드가 나에게 잘못된 개체 참조를주고있다.
시리즈 목록을 가져 오는 데는 아무런 문제가 없습니다. 그게 내 'For each State in stfipsList4'가하는 일입니다. 그리고 그 목록을 반복하여 기본 방법을 사용하여 차트에 시리즈를 아무 문제없이 추가 할 수 있습니다. 이 질문은 HighCharts 기본 로딩 애니메이션과 혼동하지 말고 시리즈를 통해 애니메이션을 재생/재생하는 것입니다. 내가 뭘 하려는지 jsFiddle을 참조하십시오. 단 1 시리즈 만 있습니다. 내 문제는 반복하는 javascript 함수에 series 목록을 전달하는 방법을 잘 모르고 series.addpoint를 수행한다는 것입니다. – wergeld
이 답변은 DotNet.HighCharts API를 사용하여 HighCharts에 여러 시리즈를 추가하는 훌륭한 일반적인 해결책이지만 이해할 수없는 질문을 처리하지는 않습니다. 이것은 일련의리스트에있는 모든 시리즈를 한 번에 차트에 추가하는 것입니다. jsFiddle 예제에서 설명한대로 시리즈 지점을 재생하지 않습니다. – wergeld
원래 귀하의 질문을 잘못 읽었습니다. 미안 해요. 왜 사람들이 투표를하는 지 모르겠습니다. DotNet.Highcharts를 사용하는 좋은 방법입니다. 그러나 당신이 말한대로 그것은 당신의 질문에 대답하지 않습니다. – Linger