Estoy desarrollando una GUI en C# .Net bajo WPF. De hecho, es una aplicación para la comunicación serial con el dispositivo integrado, quiero mostrar un gráfico de líneas con los datos recibidos frecuentemente. Y también debería proporcione una opción para guardar esos cuadros y dar una opción para imprimirlos. ¿Cómo puedo dibujar esto dinámicamente con el soporte de librerías o software gratuitos?Gráfico de líneas dinámicas en C# Aplicación WPF
6
A
Respuesta
9
Uso Dynamic Data Display para todas mis necesidades de gráficos WPF. Es compatible con guardar los gráficos, es muy rápido, proporciona un acercamiento y paneo sin interrupciones. Espacio de nombres: 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# Código: convertidor utilizado
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# Código: Borrar gráfico y Crear gráfico de línea, aquí mi StockasticProcessPoint es una estructura con un campo "DateTime t" y 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 esto, debería ser capaz de trazar un gráfico en WPF. Agregar datos en vivo cuando vuelve desde el puerto serie no debería ser un problema. También puede ver los ejemplos vinculantes de DynamicDataDisplay.
Cuestiones relacionadas
- 1. eliminando las líneas de la cuadrícula en C# Gráfico y haciendo líneas de gráfico más gruesas
- 2. ¿Cómo crear un gráfico de líneas en la aplicación iphone?
- 3. Columnas dinámicas WPF MvvM DataGrid
- 4. Gráfico de líneas de Graphael
- 5. Gráfico en vivo para una aplicación C
- 6. Dibujando líneas 3D en WPF
- 7. Gráfico de líneas animadas en Javascript?
- 8. gráfico de líneas de Rafael animar y actualizar el gráfico
- 9. Líneas discontinuas para un gráfico de líneas de google
- 10. Cómo eliminar líneas en un gráfico Matplotlib
- 11. Rendering líneas nítidas en WPF
- 12. Eliminar líneas de cuadrícula de Winforms Gráfico
- 13. DialogResult en la aplicación WPF en C#
- 14. Dibujando líneas en código usando C# y WPF
- 15. Hacer un gráfico Gráfico en C#
- 16. Ocultar las líneas de cuadrícula en un control gráfico ASP.Net
- 17. Componente de diseño de gráfico WPF
- 18. wpf toolkit gráfico de líneas sin puntos y con diferentes colores de línea
- 19. Crear clases dinámicas personalizadas en Objective-C
- 20. Reiniciar un guion gráfico WPF
- 21. Mostrar líneas y puntos en el gráfico de líneas - API de visualización
- 22. Visiblox, WPF: mostrar marcadores etiquetados en un gráfico
- 23. de relleno degradado en el gráfico de líneas (Highcharts)
- 24. C# - Desactivar palabras clave dinámicas
- 25. Funciones dinámicas C++ y TOTALMENTE
- 26. Gráfico de líneas NVD3 con datos en tiempo real
- 27. ¿Cómo dibujar líneas verticales en el gráfico de Highcharts?
- 28. ¿Debería escribirse una aplicación WPF en C++/CLI o C#?
- 29. Gráfico sobre las líneas de cuadrícula en el gráfico de barras AChartEngine
- 30. Líneas entre nodos en WPF TreeView
¿Cómo puedo agregar los archivos de biblioteca a mi proyecto? Lo descargué si tengo que agregar todos los archivos .dll – Mukthi
Lo hace en Visual Studio, en la carpeta Referencias del proyecto -> Agregar referencia. Agregue DynamicDataDisplay.dll a su proyecto. Igual que cualquier otra referencia externa. – NetSquirrel
Consulte: https://github.com/apoydence/DynamicDataDisplay y https://www.nuget.org/packages/DynamicDataDisplay/ para ver el código fuente y la instalación nuget. – Andrew