2010-04-09 11 views
10

He estado buscando en los controles de gráficos de Silverlight para visualizar una gran cantidad de muestras, (~ 10,000 puntos de datos en cinco series separadas - ~ 50k puntos en total).Control de gráficos Silverlight de alta densidad

He encontrado que las opciones existentes producidas por Dundas, Visifire, Microsoft etc. son extremadamente pobres cuando muestran más de unos pocos cientos de puntos de datos.

Creo que los problemas de rendimiento con los controles de gráfico existentes son causados ​​por el uso intensivo de gráficos vectoriales. Ergo una solución sería un control de gráfico del lado del cliente que utiliza la clase WritableBitmap para generar un gráfico de ráster.

antes de que caiga demasiado lejos en el agujero del conejo re-invención de la rueda - Alguien ha encontrado un tercero o el control de OSS que gestionar un gran número de puntos de datos en un minigráfico?

+0

Hola, échele un vistazo a SciChart, que puede representar múltiples series con un total de 100.000 puntos de datos a 30FPS en la demostración de rendimiento (3,000,000 de datos por segundo). Esta es una nueva oferta y estará lista para comenzar a principios del primer trimestre de 2012. No tiene todas las características que los gráficos LOB tienen, sin embargo admite múltiples tipos de gráficos, un cursor básico, zoom, panorámica y escalado de ejes y muy alto rendimiento. http://www.abtsoftware.co.uk/News/tabid/93/articleType/ArticleView/articleId/16/SciChart_Technology_Preview_-_Fast_WPFSilverlight_Stock_Chart_Performance_Demo.aspx –

Respuesta

-1

¿Has mirado los controles de gráficos de Telerik? Aquí hay un enlace a una de sus demostraciones donde se están utilizando 100.000 puntos de datos:
http://demos.telerik.com/silverlight/#Chart/Sampling

También debería mencionar que no he utilizado la cartografía controla a mí mismo, así que no puedo responder por ellos. Pero las demostraciones se ven bien para mí.

EDIT:
El enlace de arriba se ha caducado. Aquí hay un enlace a la última encarnación del control de gráficos Telerik Lo llaman ChartView ahora:
http://demos.telerik.com/silverlight/#ChartView/FirstLook

+0

El enlace carga una página en blanco. –

+0

Sí, los componentes de Telerik se han actualizado desde entonces. He actualizado el enlace. –

1

Antes de empezar a jugar con WritableBitmap en su propia echar un vistazo a WriteableBitmapEx de René Schulte, que escribe sobre ella here . Cosas geniales.

+0

¡Excelente sugerencia! Desde entonces he tenido un violín con WritableBitmapEx para escribir un pequeño juego, pero todavía no he empezado con gráficos de cartas. Toda una bonita biblioteca. Gracias Anthony. – ptg

1

No conozco ningún OSS o control de terceros que haga lo que necesita.

El único caso en el que he tenido la necesidad de más de 100K de puntos de datos, lo hicimos funcionar manteniéndolo simple. El mayor asesino de perf era el número de elementos dentro de cada punto de datos. Al mantener el elemento una elipse simple con un relleno de pincel estático, la aplicación fue bastante ágil.

+0

Hola, ¿qué componente usaste al final que fue capaz de renderizar 100k puntos? –

7

Echa un vistazo a Visiblox (http://www.visiblox.com/) Gráficos. Estoy trabajando en una aplicación de telemetría en el minuto que utiliza tres de sus gráficos en el mismo componente de Silverlight, trazando unos 36,000 puntos en total, y hay muy poca desaceleración en términos de rendimiento, si es que hay alguno.

Tienen un ejemplo de alto rendimiento en su sitio web aquí - http://www.visiblox.com/examples/LargeDataSets.Opté por usar Visiblox después loooking en la siguiente entrada en el blog:

Nueva comparación de rendimiento: http://www.visifire.com/blog/2011/12/02/fast-silverlight-charts/

Antiguo comparación de rendimiento: http://www.scottlogic.co.uk/blog/colin/2010/12/visiblox-visifire-dynamicdatadisplay-charting-performance-comparison/

Mi ejemplo de telemetría es ahora parte de un artículo CodeProject que he creado, si quieres echar un vistazo!

3

Según las recomendaciones aquí, acabo de probar Visiblox e Infragistics.

Visiblox tiene una buena experiencia de desarrollador, API limpias, sin distensión. Si bien el rendimiento está bien para unos pocos miles de puntos de datos, el rendimiento se desmorona a medida que avanza en el rango de 100k. Aquí está the Visiblox sample con algunos miles de puntos (puede descargar la muestra y simplemente ajustar la cantidad de puntos de datos).

Ahora, el argumento común aquí es que no debe unir tantos datos a un gráfico de todos modos, pero debería hacer algunos ajustes de antemano. Estoy de acuerdo con eso, pero idealmente, quiero un control de gráfico que se encargue de eso por mí. Obtener Zoom, Paneo y todo lo correcto son tareas no triviales y me complacería pagar unos $ 100 para obtener esa funcionalidad. Es de sentido común económico no reinventar la rueda aquí.

Infragistics ciertamente tiene ese derecho. Puedo vincular un millón de puntos de datos y obtener un rendimiento uniforme. Aquí está the Infragistics sample.

Sin embargo, Infragistics instala una gran cantidad de basura (una aplicación web IIS local con las muestras que también puede ver en línea) y además de las (excelentes) muestras y la documentación del nivel de código, extraño alguna introducción de alto nivel cada componente y sus módulos individuales.

Dado que mucha gente en SO recomienda controles Telerik por sus API limpias, Documentación y Soporte técnico para desarrolladores, también eché un vistazo a su control gráfico. Sin embargo, debo admitir que lo encuentro bastante lento (el zoom toma aproximadamente 500-1000ms, que es demasiado largo para sentirse suave). Aquí está the Telerik sample.

+0

Actualmente estoy buscando en el cuadro [mindscapehq] [http://www.mindscapehq.com/demo/silverlightelements/demopage.html#/ChartOverviewPage]. Comparado con Infragistics, logra un buen rendimiento incluso cuando se trazan valores x no equidistantes (un verdadero gráfico x, y). –

0

creo que la muestra Telerik que busca se puede encontrar here. Muestra grandes cantidades de datos que realmente puede acercar/alejar. También tienen una carga de servidor "Performance" Demo también. Aquí hay un ejemplo de Scatter Chart con cientos de puntos de datos.

Cuestiones relacionadas