Benutzer mit den meisten Antworten
Chart Nur Horizontale 0 Linie zeichen

Frage
-
Hallo NG
Wie kann ich nur die Horizontale 0-Mitteline in einem System.Windows.Forms.DataVisualization.Charting.Chart zeichnen.
Habe schon mit Major- und Minor.Interval und IntervalOffset herumexperimentiert.
Leider habe ich keine brauchbare Lösung gefunden.
Besten Dank
Robert Oberholzer
Antworten
-
Hallo Robert,
Schau Dir auch mal die Dokumentation zur StripLine-Klasse an (s. nachgetragenen Link oben).
P.S. Bitte markiere den Beitrag als Antwort, wenn Deine Frage damit gelöst ist (verwende dazu den "Als Antwort markieren"-Link unter dem Beitrag).Gruß
Marcel- Als Antwort markiert Robert Oberholzer Dienstag, 9. November 2010 07:37
Alle Antworten
-
Hallo Robert,
> die 0 - Mittellinie ...
Du meinst die horizontale X-Achse - also die vertikale Y-Achse ausblenden?
Dann ... (Vorbereitung gemäß: [Posting hier] ) zum Beispiel:var yAchse = chart1.ChartAreas[0].AxisY; yAchse.Enabled = AxisEnabled.False; _______________________________
private void Form1_Load(object sender, EventArgs e) { chart1.Series.Clear(); Series sollSerie = new Series("Soll-Werte"); List<Point> istWerte = new List<Point>(); for (int i = 0; i < 10; i++) istWerte.Add(new Point(i*30, i*3)); List<Point> sollWerte = new List<Point>(); for (int i = 0; i < 10; i++) sollWerte.Add(new Point(i * 30, i * 3)); for (int i = 0; i < istWerte.Count; i++) sollSerie.Points.Add(new DataPoint( istWerte[i].X, istWerte[i].Y)); var xAchse = chart1.ChartAreas[0].AxisX; var yAchse = chart1.ChartAreas[0].AxisY; yAchse.Enabled = AxisEnabled.False; xAchse.Maximum = 310; xAchse.RoundAxisValues(); sollSerie.MarkerSize = 15; sollSerie.MarkerStyle = MarkerStyle.Cross; sollSerie.ChartType = SeriesChartType.FastPoint; Series istSerie = new Series("Ist-Werte"); for (int i = 0; i < istWerte.Count; i++) istSerie.Points.Add(new DataPoint( istWerte[i].X, istWerte[i].Y)); //istSerie.BorderWidth = 3; sollSerie.ChartType = SeriesChartType.Point; sollSerie.MarkerSize = 15; sollSerie.MarkerStyle = MarkerStyle.Circle; chart1.Series.Add(istSerie); chart1.Series.Add(sollSerie); }
_______________
Komplett disablen:
chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
oder etwas wie:chart1.ChartAreas[0].AxisX.MajorGrid.IntervalOffset = int.MinValue;
ciao Frank -
Hallo Frank
Habe Dein beispiel ausprobiert. Ist nicht ganz das was ich brauche.
Hier ein Beispiel wie es ungefähr aussehen müsste.
20%
10%
0% ______________________
-10%
-20%
2007 2008 2009
Mit Balkendiagramm (ColumnChart) ins Plus und ins Minus
Gruss Robert
-
Hallo Robert,
Falls ich Dich richtig verstehe, sollte Dir folgender Code weiterhelfen:
using System; using System.Collections.Generic; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; namespace ChartTest1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { chart1.Series.Clear(); List<PercentPerYear> salesList = new List<PercentPerYear> { new PercentPerYear { Year="2007", Percent=19 }, new PercentPerYear { Year="2008", Percent=4 }, new PercentPerYear { Year="2009", Percent=-12 } }; chart1.DataBindTable(salesList, "Year"); chart1.ChartAreas[0].AxisY.Maximum = 20; chart1.ChartAreas[0].AxisY.Minimum = -20; chart1.ChartAreas[0].AxisY.IntervalAutoMode = IntervalAutoMode.FixedCount; chart1.ChartAreas[0].AxisY.Interval = 10; chart1.ChartAreas[0].AxisY.MajorTickMark.LineWidth = 0; chart1.ChartAreas[0].AxisY.LineWidth = 0; chart1.ChartAreas[0].AxisY.LabelStyle.Format = "{0}%"; chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = false; chart1.ChartAreas[0].AxisX.LineWidth = 0; chart1.ChartAreas[0].AxisX.MajorTickMark.LineWidth = 0; chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false; StripLine line = new StripLine { BorderColor = System.Drawing.Color.Black, Interval = 0, IntervalOffset = 0, StripWidth = 0, StripWidthType = DateTimeIntervalType.NotSet }; chart1.ChartAreas[0].AxisY.StripLines.Add(line); } } public class PercentPerYear { public string Year { get; set; } public double Percent { get; set; } } }
s.a. StripLine-Klasse:
http://msdn.microsoft.com/de-de/library/system.windows.forms.datavisualization.charting.stripline.aspxGruß
Marcel- Bearbeitet Marcel RomaModerator Montag, 8. November 2010 15:56
- Als Antwort vorgeschlagen Frank Dzaebel Montag, 8. November 2010 18:10
-
Hallo Robert,
Schau Dir auch mal die Dokumentation zur StripLine-Klasse an (s. nachgetragenen Link oben).
P.S. Bitte markiere den Beitrag als Antwort, wenn Deine Frage damit gelöst ist (verwende dazu den "Als Antwort markieren"-Link unter dem Beitrag).Gruß
Marcel- Als Antwort markiert Robert Oberholzer Dienstag, 9. November 2010 07:37
-
Hallo Robert,
ich bin gerade erst wieder da. Wenn Du es so haben willst, ist StripLine auch eine gute Möglichkeit - ich brauche das ja nicht zu mehr groß mit Code zu beschreiben, denn Marcel hat Deine verbesserte Beschreibung ja schon mit einem Codebeispiel beschrieben.
Diese Bereichsstreifen sind horizontale oder vertikale Bereiche (Streifen), die den Hintergrund eines Diagramms in regulären oder benutzerdefinierten Intervallen ggf. schattieren. Meine genannter IntervalOffset spielt da mit der StripLine zusammen.
Trotzdem für andere später: Diese StripLine bestimmt die Wiederholungen, wann in welchem Intervall einmal oder wiederholt gezeichnet wird. Interval, -Eigenschaft gesteuert. Wenn der Interval-Eigenschaft ein Wert ungleich 0 (null) zugewiesen wird, wird ein Bereichsstreifen immer wieder bei jedem angegebenen Intervall gezeichnet. Das habe ich in meinem Hinweis - als Deine Frage noch nicht ganz klar war - ausgenutzt.
ciao Frank