2010-07-18 12 views

risposta

13

Da quando lavoro con i Microsoft Charting Controls incorporati in .NET 4.0 ultimamente (e amando ogni minuto!), Ho pensato che mi sarei scomodato nel rispondere alla mia stessa domanda ...

#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

"L'ambiente di esempio per Microsoft Chart Controls" contiene un sacco di esempi estremamente utili racchiusi in una semplice interfaccia utente di browser: http://code.msdn.microsoft.com/mschart –

+2

Amico, stai parlando a te stesso troppo. – Massif

+0

di solito il primo segno di follia .. – Darknight

2

Non dimenticare, non devi fare tutto in F #.

si può arrotolare tutti i tuoi F calcoli # in una libreria o di classe, e quindi utilizzare tale in qualunque "Front End" la lingua che si desidera:

Ad esempio si potrebbe facilmente sposarsi F # back-end con WPF o Silverlight o C# WinForms.

+2

Tuttavia, se stai lavorando con i dati, quindi esplorarli interattivamente è uno dei punti di forza di F # (e tu non posso farlo con C#). E per l'esplorazione interattiva, i grafici sono essenziali ... –

+0

Penso che mi abbia frainteso, sono d'accordo per l'interattività Anch'io avrei lavorato con F #. Tuttavia, per il codice di produzione, userei F # come back-end e sfruttare il "Front-End" usando WPF/altre lingue nella sua posizione "nativa". – Darknight

+0

Grazie per il suggerimento. In effetti, questo è esattamente ciò che ho fatto: analizzare, filtrare, trasformare e analizzare i dati in F #, quindi usare C# per la presentazione dei grafici. Il supporto per la progettazione dell'interfaccia utente di Visual Studio ha reso molto semplice la creazione dell'app di controllo e ha aiutato la messa a punto dell'aspetto del grafico, ecc. –

1

Si può apprezzare il mio parametric plot in F# che visualizza le dinamiche predatore-preda utilizzando la nuova funzionalità di creazione di grafici in .NET 4. Il 5-line soluzione originale Mathematica diventa 19 righe di codice F #. Non male per un linguaggio generico!

Tuttavia, questa è una soluzione one-shot e, di conseguenza, non è molto utile in F # interactive. Per riutilizzare la stessa funzionalità in modo interattivo è necessario gestire i problemi di threading (marshalling dei dati da e verso un thread dell'interfaccia utente che gestisce una GUI persistente) come fa il nostro prodotto F# for Visualization. La tecnica è anche descritta nel mio Visual F# 2010 for Technical Computing book.

Problemi correlati