2010-07-18 13 views

Respuesta

13

Desde que he estado trabajando con los controles incorporados de Microsoft Charting en .NET 4.0 últimamente (¡y me encanta cada minuto!), Pensé en probar un poco responder a mi propia pregunta ...

#r "System.Windows.Forms.DataVisualization" 

open System.Windows.Forms 
open System.Windows.Forms.DataVisualization.Charting 

type LineChartForm(title, xs : float seq) = 
    inherit Form(Text=title) 

    let chart = new Chart(Dock=DockStyle.Fill) 
    let area = new ChartArea(Name="Area1") 
    let series = new Series() 
    do series.ChartType <- SeriesChartType.Line 
    do xs |> Seq.iter (series.Points.Add >> ignore) 
    do series.ChartArea <- "Area1" 
    do chart.Series.Add(series) 
    do chart.ChartAreas.Add(area) 
    do base.Controls.Add(chart) 

let main() = 
    let data = seq { for i in 1..1000 do yield sin(float i/100.0) } 
    let f = new LineChartForm("Sine", data) 
    f.Show() 

main() 
+2

El "Entorno de muestras para Microsoft Chart Controls" tiene una tonelada de ejemplos extremadamente útiles, todo envuelto en una interfaz de usuario sencilla para navegar: http://code.msdn.microsoft.com/mschart –

+2

Amigo, estás hablando contigo mismo demasiado. – Massif

+0

suele ser el primer signo de locura .. – Darknight

2

no se olvide, que no tienen que hacer todo en F #.

Puede enrollar todos sus F # cálculos en una biblioteca o clase, y luego utilizar eso en cualquier idioma "front-end" que desee:

Por ejemplo, usted podría casarse con facilidad F # back-end con WPF o Silverlight o C# WinForms.

+2

Sin embargo, si estás trabajando con datos, entonces explorarlos interactivamente es uno de los puntos fuertes de F # (y no se puede hacer eso con C#). Y para exploración interactiva, los gráficos son esenciales ... –

+0

Creo que me has malentendido, estoy de acuerdo con la interactividad. Yo también trabajaría con F #. Sin embargo, para el código de producción, usaría F # como back-end y aprovecharé el "Front-End" usando WPF/otros idiomas en su lugar 'nativo'. – Darknight

+0

Gracias por el consejo. De hecho, eso es exactamente lo que he estado haciendo: analizar, filtrar, transformar y analizar datos en F #, y luego usar C# para la presentación de gráficos. El soporte de Visual Studio UI Designer hizo que la creación de la aplicación de control fuera muy fácil, y ayudó a ajustar la apariencia del gráfico, etc. –

1

Es posible apreciar mi parametric plot in F# que visualiza la dinámica depredador-presa utilizando la nueva funcionalidad de gráficos en .NET 4. La solución original Mathematica 5 líneas se convierte en 19 líneas de código F #. ¡No está mal para un lenguaje de propósito general!

Sin embargo, esta es una solución única y, en consecuencia, no es muy útil en F # interactivo. Para reutilizar la misma funcionalidad de forma interactiva, debe manejar problemas de subprocesamiento (ordenar los datos hacia y desde un subproceso de interfaz de usuario que maneja una GUI persistente) como lo hace nuestro producto F# for Visualization. La técnica también se describe en mi Visual F# 2010 for Technical Computing book.

Cuestiones relacionadas