Sto sviluppando una GUI in C# .Net in WPF.In realtà è un'applicazione per la comunicazione seriale con il dispositivo incorporato, voglio mostrare un grafico a linee con i dati frequentemente ricevuti.E anche io dovrei fornire un'opzione per salvare quei grafici e dare un'opzione per stamparlo. Come posso disegnare questo dinamicamente con il supporto di librerie o software gratuiti?Grafico a linee dinamiche in C# Applicazione WPF
6
A
risposta
9
Io uso Dynamic Data Display per tutte le mie esigenze di creazione di grafici WPF. Supporta il salvataggio dei grafici, è molto veloce, fornisce zoom e panoramica senza interruzioni. Spazio dei nomi: xmlns: d3 = "http://research.microsoft.com/DynamicDataDisplay/1.0"
XAML:
<d3:ChartPlotter Name="plotter" Background="White">
<d3:ChartPlotter.Resources>
<conv:Date2AxisConverter x:Key="Date2AxisConverter"/>
</d3:ChartPlotter.Resources>
<d3:ChartPlotter.HorizontalAxis>
<d3:HorizontalDateTimeAxis Name="dateAxis"/>
</d3:ChartPlotter.HorizontalAxis>
<d3:Header Content="{Binding PlotHeader}"/>
<d3:VerticalAxisTitle Content="Value"/>
<d3:HorizontalAxisTitle Content="Date"/>
</d3:ChartPlotter>
C# Codice: convertitore utilizzato
public class Date2AxisConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is DateTime && targetType == typeof(double))
{
return ((DateTime)value).Ticks/10000000000.0;
// See constructor of class Microsoft.Research.DynamicDataDisplay.Charts.DateTimeAxis
// File: DynamicDataDisplay.Charts.Axes.DateTime.DateTimeAxis.cs
// alternatively, see the internal class Microsoft.Research.DynamicDataDisplay.Charts.DateTimeToDoubleConversion
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// try Microsoft.Research.DynamicDataDisplay.Charts.DateTimeAxis.DoubleToDate
throw new NotSupportedException();
}
#endregion
}
C# Codice: Clearing Graph e Creating line graph, Here my StockasticProcessPoint è una struttura con un campo "DateTime t" e un campo "Double value".
using Microsoft.Research.DynamicDataDisplay;
using System.Collections.ObjectModel;
using Microsoft.Research.DynamicDataDisplay.DataSources;
public void ClearLines()
{
var lgc = new Collection<IPlotterElement>();
foreach (var x in plotter.Children)
{
if (x is LineGraph || x is ElementMarkerPointsGraph)
lgc.Add(x);
}
foreach (var x in lgc)
{
plotter.Children.Remove(x);
}
}
internal void SendToGraph() {
IPointDataSource _eds = null;
LineGraph line;
ClearLines();
EnumerableDataSource<StochasticProcessPoint> _edsSPP;
_edsSPP = new EnumerableDataSource<StochasticProcessPoint>(myListOfStochasticProcessPoints);
_edsSPP.SetXMapping(p => dateAxis.ConvertToDouble(p.t));
_edsSPP.SetYMapping(p => p.value);
_eds = _edsSPP;
line = new LineGraph(_eds);
line.LinePen = new Pen(Brushes.Black, 2);
line.Description = new PenDescription(Description);
plotter.Children.Add(line);
plotter.FitToView();
}
Con questo, si dovrebbe essere in grado di tracciare un grafico in WPF. Aggiungere dati live quando ritorna dalla porta seriale non dovrebbe essere un problema. Puoi anche guardare gli esempi di binding da DynamicDataDisplay.
Problemi correlati
- 1. AmCharts - Grafico a linee Contenitore grafico traboccante
- 2. Grafico a linee animato in Javascript?
- 3. Grafico a linee con frecce a matrice
- 4. Linee tratteggiate per un grafico a linee di google
- 5. Come migliorare il grafico a linee frastagliate in ggplot2?
- 6. Grafico a linee con segmenti multicolori
- 7. Curva materiale grafico a linee Google
- 8. Grafico a linee Pyplot/matplotlib - stesso colore
- 9. Colori grafico a linee C3.js dall'URL
- 10. d3 Riempimento del grafico a linee arbitrarie
- 11. Come creare un grafico a linee multiple in tempo reale?
- 12. Grafico a linee Google: come aggiungere unità?
- 13. Inserimento di un'interruzione/interruzione in un grafico a linee
- 14. d3.js Come aggiungere linee a un grafico a barre
- 15. griglia wpf con colonne dinamiche
- 16. C# WPF - Icona di applicazione + ShowInTaskbar = False
- 17. Disegno di linee 3D in WPF
- 18. nvd3.js - Punti più grandi in un grafico a linee
- 19. Visualizzazione della griglia verticale nel grafico a linee in matplotlib
- 20. Animazione del grafico a linee "crescente" in Python/Matplotlib
- 21. Grafico a linee JFreeChart con testo in ogni punto
- 22. grafico a linee di dati json in d3
- 23. Grafico a linee NVD3 con dati in tempo reale
- 24. Grafico a linee con Int come asse x, non Data
- 25. wpf toolkit grafico a linee senza punti e con colori di linea diversi
- 26. Come creare un grafico a linee sfaccettato usando ggplot?
- 27. Tracciare più linee in un grafico
- 28. Le risorse a livello di applicazione dinamica non sono dinamiche quando sono ospitate in ElementHost
- 29. Come mostrare i punti marcatori nel grafico a linee usando C#
- 30. Come ridurre il numero di linee verticali in un grafico a linee KendoUI?
Come posso aggiungere i file di libreria al mio progetto. Ho scaricato se devo aggiungere tutti i file .dll – Mukthi
Lo fai in Visual Studio, nella cartella Riferimenti del progetto -> Aggiungi riferimento. Aggiungi DynamicDataDisplay.dll al tuo progetto. Come qualsiasi altro riferimento esterno. – NetSquirrel
Check out: https://github.com/apoydence/DynamicDataDisplay e https://www.nuget.org/packages/DynamicDataDisplay/ per il codice sorgente e l'installazione di nuget. – Andrew