usar - Diagrama de trazado con valores de richTextBox C#
graph on c# (2)
Asumiendo que:
-
richTextBox
es una instancia de la claseSystem.Windows.Forms.RichTextBox
; -
chart
es una instancia de la claseSystem.Windows.Forms.DataVisualization.Charting.Chart
.
El siguiente método está destinado a analizar una matriz de string
:
private static readonly CultureInfo EnglishCulture = CultureInfo.GetCultureInfo("en-US");
private static Tuple<double, double>[] GetData(string[] lines)
{
return Array.ConvertAll(lines, line =>
{
string[] elems = line.Split('','');
return new Tuple<double, double>(double.Parse(elems[3], EnglishCulture), double.Parse(elems[1], EnglishCulture));
});
}
Uso:
var data = GetData(richTextBox.Lines);
Ahora solo necesita vincular esta matriz de data
como DataSource
un gráfico o agregarlos manualmente a la serie como se muestra a continuación:
chart.Series.Clear();
Series series = new Series("sample") { ChartType = SeriesChartType.Line, BorderWidth = 2, MarkerSize = 5, MarkerStyle = MarkerStyle.Square };
foreach (var p in data)
series.Points.Add(p.Item1, p.Item2);
chart.Series.Add(series);
¿es posible trazar gráficos de datos que se recopilan desde richTextBox? Por ejemplo, tengo el siguiente texto en richTextBox:
$GPRMC,152908.00,A,5307.0794359,N,02308.8918827,E,0.049,188.6,280612,0.0,E,D*3A
$GPRMC,152909.00,A,5307.0794307,N,02308.8918792,E,0.081,193.3,280612,0.0,E,D*3A
$GPRMC,152910.00,A,5307.0794343,N,02308.8918811,E,0.034,42.9,280612,0.0,E,D*0F
$GPRMC,152911.00,A,5307.0794410,N,02308.8918827,E,0.099,1.3,280612,0.0,E,D*30
$GPRMC,152912.00,A,5307.0794461,N,02308.8918808,E,0.055,331.9,280612,0.0,E,D*32
Y quiero gráfico de trama, por ejemplo, Latitud (tiempo):
5307.0794359 -> 152908.00
5307.0794307 -> 152909.00
5307.0794343 -> 152910.00
5307.0794410 -> 152911.00
5307.0794461 -> 152912.00
No sé cómo escribir una función, que recuperará la latitud de las líneas [1,2,3,4,5] y el tiempo de las líneas [1,2,3,4,5]. Y luego traza un gráfico.
Necesito una función universal, porque puedo tener datos de 100 líneas o 400 líneas, etc.
¿Alguien puede ayudarme? Cuenta para mí cualquier ayuda (código, ejemplo, consejos o enlaces).
Encuentro respuesta para mi pregunta. Cambio "un poco" una línea en el código creado por Dmitry. Aquí está:
Previamente código:
private static readonly CultureInfo EnglishCulture = CultureInfo.GetCultureInfo("en-US");
Nuevo código (acaba de agregar System.Globalization antes de CultureInfo) y funciona en Visual Studio 2012 Ultimate), antes del cambio tengo el error "CultureInfo no encontrado":
private static readonly System.Globalization.CultureInfo EnglishCulture = CultureInfo.GetCultureInfo("en-US");
No sé por qué el código anterior no me funciona ... Tal vez sea por la versión de Visual System. Sin embargo, todo funciona ahora bien, y es divertido porque ahora también funciona en el código anterior, y lo mismo con el nuevo cambio. No sé qué está pasando, pero todo está bien.
Gracias Dmitry, por tu ayuda.
PD. VERRY IMPORTANTE (al principio debemos declarar esto):
using System.Globalization;