Sida 1 av 1
C# VS.net 2010 Chartcontrol
Postat: 5 januari 2014, 23:00:43
av TomasL
Någon som vet hur den funkar, blir inte klok på den.
Jag har en array float[21,4]
[n,0] i arrayen är X-vardena och [n,1] och [n,2] Y-värden för två kurvor, [n,3] är Y-värden för en tredje kurva som skall plottas mot den andra Y-axeln.
X-värdena är samma för samtliga tre kurvor.
Re: C# VS.net 2010 Chartcontrol
Postat: 6 januari 2014, 08:17:24
av janno
Jag, har testat den när den kom för 2-3 år sedan. Men fick aldrig till det jag ville göra.
Jag antar att du vill plotta mätvärden, det var vad jag skulle göra. Jag prövade också ett bilbliotek från Microsoft Research som heter DynamicDataDisplay det fungerade mycket bättre men all utveckling upphörde och buggar rättades inte.
Nu kör jag ett bibliotek som heter OxyPlot
http://oxyplot.codeplex.com/ som fungerar väldigt bra och har allt jag saknade i de andra. Här finns exempel på vad du kan få för resultat
http://www.objo.net/oxyplot/examplebrowser/default.html
Nu var det nog inte detta du vill ha som svar, men vill du göra "Excel" grafer så kan du nog få till det med Charcontrol. Annars rekomenderar jag att du prövar OxyPlot.
/Janno
Re: C# VS.net 2010 Chartcontrol
Postat: 6 januari 2014, 10:03:36
av TomasL
Tror jag fått ordning på det, som vanligt så är alla exempel på nätet mer eller mindre felaktiga eller icke kompletta.
Återkommer med lite exempel och förklaringar.
Re: C# VS.net 2010 Chartcontrol
Postat: 6 januari 2014, 10:38:22
av TomasL
Så här verkar det vara.
Jag var tvungen att dela upp data till en array per serie.
Kod: Markera allt
chart1.Series.Add("Serie1");
chart1.Series.Add("Serie2");
chart1.Series.Add("Serie3");
chart1.Series["Serie1"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
chart1.Series["Serie2"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
chart1.Series["Serie3"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
chart1.Series["Serie3"].YAxisType = System.Windows.Forms.DataVisualization.Charting.AxisType.Secondary;
chart1.ChartAreas["ChartArea1"].AxisY.Title ="Serie1+2";
chart1.ChartAreas["ChartArea1"].AxisY2.Title = "Serie3";
chart1.ChartAreas["ChartArea1"].AxisX.Title = "X-Data";
chart1.Series["Serie1"].Points.DataBindXY(xdata, Serie1);
chart1.Series["Serie2"].Points.DataBindXY(xdata, Serie2);
chart1.Series["Serie3"].Points.DataBindXY(xdata, Serie3);
Detta plottar serie1 och serie2 mot första Y-axeln samt serie3 mot andra Y-axeln, samt sätter axeltitlar.
Dessutom är det lämpligt att göra en "chart1.Series.Clear();" i början av programmet, då det alltid finns en default "series1" i kontrollen.
Problemet visade sig med felaktiga exempel:
Kod: Markera allt
chart1.Series["Serie3"].YAxisType = AxisType.Secondary;
Detta funkade inte, utan jag fick felmeddelanden, alla exempel utom ett som jag hittade på nätet var snarlika ovanstående.
Så här skall det stå:
Kod: Markera allt
chart1.Series["Serie3"].YAxisType = System.Windows.Forms.DataVisualization.Charting.AxisType.Secondary;
Förmodligen är det något namespace som inte importeras på rätt sätt, dock kan jag inte komma på vilket, då System.Windows.Forms finns med.
Re: C# VS.net 2010 Chartcontrol
Postat: 6 januari 2014, 18:58:14
av janno
Vad bra att du fick det att fungera, du saknar:
Kod: Markera allt
using System.Windows.Forms.DataVisualization.Charting;
Så blir koden lite tydligare.
/J
Edit: la dit code tag
Re: C# VS.net 2010 Chartcontrol
Postat: 6 januari 2014, 19:31:24
av TomasL
Kom på det till slut.