2016-08-01 24 views
0

Wie versetze Sie eine zweite Reihe in Diagrammsteuerung, wo X-Achse eine Zeichenfolge in MS-Diagrammsteuerung ist.Offset eine zweite Reihe in Diagrammsteuerung, wo X-Achse eine Zeichenfolge ist

Ich möchte die X-Achse als eine Zeichenfolge beibehalten.

Im folgenden Beispiel meines Problems möchte ich, dass serise Test2 an der x-Achsenposition "test 4" startet, derzeit jedoch beide bei "test 1" beginnen, obwohl der erste x-Achsenpunkt bei "test 4" ist für die Serie Test2?

Ich denke, ich suche nach einem Offset, wo ich Serien Test2 an X-Achse Punkt 4 oder einen Index zu Achse wo ich den Punkt explizit hinzufügen kann, aber ich kann nicht sehen, was zu tun ist.

Auch, aber weniger ein Problem, wie starte ich die Serie TEST1 an der Y-Achse?

hier ist ein einfaches Beispiel für mein Dilemma:

Series test1 = new Series("Test1"); 
Series test2 = new Series("Test2"); 
int x =1; 
test1.XValueType = ChartValueType.Date; 
for (int i = 1; i < 7; i++) 
{ 
    test1.Points.AddXY("test" + x.ToString(), i); 
    x++; 
} 

chart1.Series.Add(test1); 
x = 4; // I would like to start plotting this series at "test 4" 

for (int i = 5; i < 10; i++) 
{ 

    test2.Points.AddXY("test" + x.ToString(), i); 
    x++; 
} 

chart1.Series.Add(test2); 

foreach (var series in chart1.Series) 
{ 
    series.ChartType = SeriesChartType.Line; 
    series.BorderWidth = 5; 

} 
chart1.ChartAreas[0].AxisX.LabelStyle.Angle = 45; 
chart1.ChartAreas[0].AxisX.LabelStyle.Interval = 1; 

Derzeit wird diese wie unten zeigt: current output

+0

Bitte siehe mein Update !! – TaW

Antwort

1

Es gibt keine Möglichkeit, mit den Daten in einer Reihe, um richtig zu funktionieren, wenn Sie sich entschieden haben, füge die x-Werte als Strings hinzu. Dies liegt daran, dass sie verloren gehen, wenn die Zeichenfolge in double konvertiert wird, was dazu führt, dass alle x-Werte 0d sind.

Sie können also nicht auf ihre Werte verweisen. Stattdessen können Sie einfach die erforderliche Nummer leerDataPoints einfügen. Also, wenn Sie die Serie von drei Datenpunkte ausgleichen möchten, können Sie schreiben:

for (int i = 0; i < 3; i++) 
{ 
    DataPoint dp0 = new DataPoint() 
        {XValue = 0, IsEmpty = true, Color = Color.Transparent }; 
    test2.Points.Insert(0, dp0); 
} 

enter image description here

Beachten Sie, dass Sie möchten, können Sie steuern, wie Empty DataPoints in einem Series im Series.EmptyPointStyle werden Einstellung angezeigt werden.

Beachten Sie auch, dass ich die Standardeinstellung series1: chart1.Series.Clear(); gelöscht habe, bevor ich die neuen hinzufüge.

Update: Ich habe gerade erst Ihre zweite Frage bemerkt.

Das Problem hier ist, dass die übliche Lösung, die ziemlich einfach und geradlinig ist, nicht funktioniert. Hier ist ist:

chart1.ChartAreas[0].AxisX.Minimum = 1; 

Dies würde funktionieren, wenn nur Ihre Werte Zahlen wären. Aber wenn Sie sie als String hinzufügen, werden keine der verschiedenen Dinge wie Interval, IntervalOffset, Minimum, Maximum oder zomme und range Einstellungen funktionieren.

Also die richtige und richtige Lösung ist es, die Daten hinzuzufügen, wie Sie sollten. Hier ein Beispiel:

for (int i = 1; i < 7; i++) 
    { 

     int px = test1.Points.AddXY(x, i); 
     test1.Points[px].AxisLabel = "test" + x; 
     x++; 
    } 

Dies schafft die Ausgabe, die Sie wollen, und hält immer noch die Datenpunkte x-Werte:

enter image description here