Używam nvd3 do narysowania prostego wykresu liniowego z otrzymywaniem danych za pośrednictwem żądania ajax. Działa idealnie z pierwszym żądaniem rysowania, ale nie przy ponownym rysowaniu. Wykres jest przerysowywany przez wywołanie tej samej funkcji rysowania, ale z innymi danymi + różnicami wartości max/min.nvd3.js chart ajax data redraw - brakujące hovereffect + dawna skala yAxis
Podczas przerysowywania wykresu z nowymi danymi "kółko najechania" nie pojawia się, a etykieta narzędzia ma. Ponadto po kliknięciu na legendę wykresu i wymuszeniu ponownego rysowania, wskaźnik pojawi się ponownie, ale wartości yAxis zostaną zmienione na wartości z pierwszego narysowanego wykresu.
Do tej pory zakładam, że przy odświeżaniu wykresu nadal zachowywane są stare wartości max/min - ale tylko w odniesieniu do efektu "hover". Ogólna tabela wygląda dobrze do tej pory, również w przypadku przerysowywania - problem po prostu stoi na zawisie i to wszystko.
Brzmi dość myląco, ale mam nadzieję, że zrozumiesz.
Niektóre kodu:
d3.json(queryurl, function(data2){
nv.addGraph(function(jsonData) {
if(chart){
chart.remove();
}
chart = nv.models.lineChart()
.x(function(d) { return d[0] })
.y(function(d) { return d[1] })
.color(d3.scale.category10().range());
chart.xAxis
.tickFormat(function(d) {
return d3.time.format('%x')(new Date(d))
});
chart.yAxis
.scale()
.tickFormat(d3.format(''));
chart.lines.yDomain([maxmin.max,maxmin.min]);
d3.select('#chart1 #chartsvg')
.datum(data2)
.transition().duration(600)
.call(chart);
nv.utils.windowResize(chart.update);
});
});
return chart;}
Zobacz mój sposób obejścia problemu (http://stackoverflow.com/questions/14543660/nvd3-uneven-ticks-when-updating-data) - w zasadzie przerysowanie wykresu. – nullPainter