2011-08-27 12 views
5

Zasadniczo chcę, aby użytkownik mógł zmienić typ wykresu, klikając menu rozwijane: BarRenderer, PieRenderer itd. Dane są takie same. Wiem, że mogę ponownie wywołać $ .jqplot() na tym samym elemencie, ale wtedy będę musiał ponownie przekazać wszystkie ustawienia. Moja strona ma zmienną liczbę wykresów, co czyni tę opcję bardzo złym wyborem.Jak dynamicznie zmieniać renderer jqplot?

Znalazłem link o tym: http://groups.google.com/group/jqplot-users/browse_thread/thread/efe6511cd9496f16/5c625baf78d3b0ae, ale wydaje mi się, że muszę jeszcze zadzwonić ponownie. $ (.qqplot).

Czy jest lepszy sposób to zrobić? I jeszcze jedno małe pytanie: czy to tylko ja, czy dokumentacja na jqplot jest zła? Muszę przejrzeć wiele miejsc, aby znaleźć pożądaną opcję (a czasami opcja nie jest udokumentowana lub nie mogłem jej jakoś znaleźć). Jak nauczysz się korzystać z jqplot?

+0

zaktualizować dane i Replot 'plot1.series [0] = .data newData; plot1.resetAxesScale(); plot1.replot(); 'http://stackoverflow.com/a/10901538/516748 – KCD

Odpowiedz

5

Myślę, że dokumenty są w porządku, ale znajdziesz ukryte funkcje w środku lub dziwactwa, które nie są udokumentowane. IIRC (minęło trochę czasu) będziesz musiał ponownie wywołać $ .jqplot(), ale najpierw musisz .empty() swój cel, albo dostaniesz dodatkowe/popsute obrazy.

Co naprawdę trzeba zrobić, to zapisać dane i pozwalają na to, aby być nazywany później:

//This isn't real jqplot syntax but it should give you a good idea of what I'm explaining 

var charts = [{name:"chart1",renderer:"pie",data:[[1,2],[2,3]]}] 
$('#graph').jqplot(charts[0]); 

//later 
charts[0].renderer = "bar"; 
$('#graph').empty().jqplot(charts[0]); 
+2

Upewnij się, aby wywołać metodę destroy() na wykresie przed wywołaniem funkcji empty() lub wystąpią wycieki pamięci. Zapisz tabelę zwróconą przez pierwsze wywołanie jqplot do zmiennej, następnie w sekcji "później" wywołaj chart.destroy(); przed odbudowaniem działki. –

Powiązane problemy