2010-04-09 23 views
10

Ho esaminato i controlli grafici di Silverlight per visualizzare un numero elevato di campioni (~ 10.000 punti dati in cinque serie separate - circa 50k punti tutto sommato).Controllo grafico ad alta densità Silverlight

Ho trovato le opzioni esistenti prodotte da Dundas, Visifire, Microsoft ecc per essere estremamente performanti quando si visualizzano più di poche centinaia di punti dati.

Credo che i problemi di prestazioni con i controlli grafici esistenti siano causati dall'uso intensivo della grafica vettoriale. Ergo una soluzione sarebbe un controllo grafico sul lato client che utilizza la classe WritableBitmap per generare un grafico raster.

Prima di cadere troppo in profondità nel foro per la re-invenzione del coniglio - qualcuno ha trovato una terza parte o un controllo OSS che gestirà un numero elevato di punti dati su una sparkline?

+0

Ciao a tutti, dai uno sguardo a SciChart, che è in grado di rendere più serie per un totale di 100.000 punti dati a 30 FPS sulla demo delle prestazioni (3.000.000 di punti dati al secondo). Questa è una nuova offerta e sarà pronta per andare in diretta all'inizio del primo trimestre 2012. Non ha tutte le funzionalità che i grafici LOB hanno, tuttavia supporta diversi tipi di grafici, un cursore di base, zoom, panoramica e ridimensionamento degli assi e prestazioni molto elevate. http://www.abtsoftware.co.uk/News/tabid/93/articleType/ArticleView/articleId/16/SciChart_Technology_Preview_-_Fast_WPFSilverlight_Stock_Chart_Performance_Demo.aspx –

risposta

-1

Hai guardato i controlli grafici di Telerik? Ecco un link ad uno dei loro demo in cui stanno usando 100.000 punti dati:
http://demos.telerik.com/silverlight/#Chart/Sampling

Vorrei anche ricordare che non ho usato la creazione di grafici io stesso controlla, quindi non posso garantire per loro. Ma i demo mi stanno bene.

MODIFICA:
Il collegamento sopra è diventato obsoleto. Ecco un link per l'ultima incarnazione del controllo grafici Telerik Lo chiamano ChartView ora:
http://demos.telerik.com/silverlight/#ChartView/FirstLook

+0

Il collegamento carica una pagina vuota. –

+0

Sì, i componenti Telerik sono stati aggiornati da allora. Ho aggiornato il collegamento. –

1

Prima di iniziare a giocare con WritableBitmap sul proprio un'occhiata a WriteableBitmapEx da René Schulte, ha i blog su di esso here . Roba impressionante.

+0

Eccellente suggerimento! Da allora ho avuto un po 'di confusione con WritableBitmapEx per scrivere un piccolo gioco, ma non ho ancora iniziato a fare qualcosa di saggio. Una bella biblioteca. Grazie Anthony. – ptg

1

Non conosco alcun OSS o controlli di terze parti che faranno ciò di cui avete bisogno.

L'unico caso in cui ho avuto bisogno di 100K + di punti dati, lo abbiamo reso funzionante mantenendo la semplicità. Il più grande perf killer era il numero di elementi all'interno di ogni punto dati. Mantenendo l'elemento una semplice ellisse con un pennello statico, l'app era piuttosto scattante.

+0

Ciao, quale componente hai utilizzato alla fine che è riuscito a rendere 100k punti? –

7

Scopri Visiblox (http://www.visiblox.com/) Charts. Sto lavorando a un'applicazione di telemetria al minuto che utilizza tre dei loro grafici nello stesso componente di Silverlight, riportando circa 36.000 punti in totale, e c'è pochissimo rallentamento in termini di prestazioni, se non del tutto.

Hanno un esempio di prestazioni elevate sul loro sito Web qui: http://www.visiblox.com/examples/LargeDataSets.Ho scelto di utilizzare Visiblox dopo loooking al seguente post del blog:

Nuovo confronto delle prestazioni: http://www.visifire.com/blog/2011/12/02/fast-silverlight-charts/

Vecchio confronto delle prestazioni: http://www.scottlogic.co.uk/blog/colin/2010/12/visiblox-visifire-dynamicdatadisplay-charting-performance-comparison/

Il mio esempio la telemetria è ora parte di un CodeProject articolo che ho creato, se vuoi dare un'occhiata!

3

Sulla base delle raccomandazioni qui, ho appena testato Visiblox e Infragistics.

Visiblox ha una buona esperienza di sviluppo, API pulite, nessuna espansione. Mentre le prestazioni vanno bene per qualche migliaio di punti dati, le prestazioni si riducono man mano che vai nella gamma dei 100k. Ecco lo the Visiblox sample con qualche migliaio di punti (è possibile scaricare l'esempio e solo modificare il numero di punti dati).

Ora, l'argomento comune qui è che non si dovrebbero legare più dati a un grafico, ma si dovrebbe fare qualche ritaglio in anticipo. Sono d'accordo con questo, ma idealmente, voglio un controllo grafico che si prenda cura di quello per me. Ottenere lo zoom, Panning e tutto ciò è giusto per svolgere compiti non banali e sarei felice di sborsare qualche $ 100 per ottenere quella funzionalità. È semplice buon senso economico non reinventare la ruota qui.

Infragistics ha ragione. Posso legare un milione di odatapoints e ottenere prestazioni ottimali. Ecco the Infragistics sample.

Tuttavia, Infragistics installa un sacco di junk (un'app Web IIS locale con i campioni che è possibile vedere anche online) e oltre ai (eccellenti) campioni e alla documentazione a livello di codice, mi manca un'introduzione di alto livello a ogni componente e i suoi moduli individuali.

Poiché molte persone su SO consigliano i controlli Telerik per le API pulite, la documentazione e il supporto per gli sviluppatori, ho anche dato un'occhiata al loro controllo grafico. Tuttavia, devo ammettere che lo trovo piuttosto lento (lo zoom richiede all'incirca 500-1000 ms, che è troppo lungo per risultare fluido). Ecco il numero the Telerik sample.

+0

Attualmente sto esaminando il grafico [mindscapehq] [http://www.mindscapehq.com/demo/silverlightelements/demopage.html#/ChartOverviewPage]. Rispetto a Infragistics, ottiene buone prestazioni anche quando si stampano valori x non equidistanti (un vero x, un grafico y). –

0

credo che il campione Telerik che cerchi può essere trovato here. Mostra grandi quantità di dati che puoi effettivamente ingrandire/ridurre. Hanno anche un carico del server "Performance" Demo. Ecco un esempio di Scatter Chart con centinaia di punti dati.

Problemi correlati