2016-07-11 12 views
0

Wie wie unten in C# zwischen 2 Achse plotten Diagramm:Wie ein Diagramm mit der Säule Grundstück zwischen der Achse plotten

enter image description here

Das ist meine Diagrammsteuerung in C# mit Visual Studio:

enter image description here

ich mag die Spalte Serie zwischen den beiden Achsen zeichnen, ohne dass die erste Spalte links geschnitten.

Die Diagrammeinstellungen:

chart.ChartAreas[0].AxisX.Interval = 1; 
chart.ChartAreas[0].AxisX.IsMarginVisible = false; 
chart.ChartAreas[0].AxisX.IsStartedFromZero = true; 

Antwort

0

sind Ihre Einstellungen falsch.

Besonders Einstellung lässt die Spalte nach links und die Hälfte davon wird abgeschnitten. Also löschen Sie diese Zeile und bleiben Sie mit dem Standardwert true!

Zusätzlich sollten Sie eine Offset auf das Intervall hinzuzufügen, so dass es nicht gestartet, die die Achse Beschriftung auf einen negativen Wert ..:

Axis ax = chart.ChartAreas[0].AxisX; 
ax.Interval = 1; 
ax.IntervalOffset = 1; 

enter image description here

Update: Wenn Sie Möchten Sie tatsächlich die Lücken entfernen, sollten Sie die zu indizierende Reihe einstellen:

MSDN on this:

Bemerkungen

Alle Datenpunkte in einer Reihe aufeinanderfolgenden Indizes verwenden, und wenn diese Eigenschaft wahr ist, dann werden Datenpunkte nacheinander aufgetragen werden, unabhängig von ihren zugehörigen X-Werten. Dies bedeutet, dass keine "fehlenden" Datenpunkte vorliegen.

zum Beispiel angenommen, es gibt drei (3) Datenpunkte in einer Reihe mit X-Werten von 1, 2 und 4. Wenn diese Eigenschaft falsch war, würde ein Daten sein Punkt an der X-Achse fehlt Standort mit der Bezeichnung "3". Wenn Sie jedoch diese Eigenschaft auf true festlegen, werden die drei Datenpunkte nacheinander unter Punkte 1, 2 und 4 gezeichnet, und es fehlen keine Daten Punkt. Die Position der X-Achse mit der Bezeichnung "3" erscheint nicht im Diagramm.

Dies ist nützlich, wenn Sie keine Datenpunkte für Intervalle haben möchten, von denen Sie wissen, dass Sie keine Daten für Daten wie Wochenenden haben.

Wenn mehrere Reihen und mindestens eine Serie verwendet indiziert X-Werte, dann werden alle Serie ist haben werden müssen, sind die Anzeige, dass ausgerichtet-, die gleiche Anzahl von Datenpunkten-und die entsprechenden Punkte müssen die gleiche haben X-Werte.

Achten Sie besonders auf den letzten Absatz, vor allem, wenn Sie eine gestapelte Tabelle verwenden möchten!

Eine Alternative zur Verwendung der Einstellung IsXValueIndexed ist das Einfügen leerer Datenpunkte an den Lücken. Am besten machen Sie es mit der DataPoint.IsEmpty Eigenschaft.

+0

danke @TaW. Ich habe gerade das 'IsMarginVisible' entfernt und addiere das' IntervalOffset = 1'. Das Ergebnis wird gleich zurückgegeben. Die Spalte bleibt am selben Ort. –

+0

Es funktioniert gut hier, wie Sie sehen können. Sie müssen uns mehr über die x-Werte erzählen. Art? Sind sie Zahlen oder Daten? Oder sind sie Saiten? Wie hast du das Intervall eingestellt? Auch: Axis.minimum, Maximum? – TaW

+0

Ich möchte das Säulendiagramm zwischen der Marke/Achsen. Sehen Sie das erste Bild in meinem aktuellen Beitrag. Ich hoffe, die Figur wird Ihnen den tatsächlichen Bedarf mitteilen. Übrigens, danke für deinen Vorschlag. –

0

Ich denke, mein Versuch und Fehler fand die Lösung. Dies was ich getan habe:

// Create some null data point with integer value 
DataPoint nulldp1 = new DataPoint(); 
nulldp1.SetValueXY(1, 0); 

DataPoint nulldp2 = new DataPoint(); 
nulldp2.SetValueXY(2, 0); 

chart.Series["SeriesName"].Points.Add(nulldp1); 
chart.Series["SeriesName"].Points.Add(nulldp2); 


// Plotting the chart 
double index = 0.5; 
foreach (var item in items) 
{ 
    // The data point for each series 
    DataPoint dp = new DataPoint(); 
    dp.XValue = index; 
    dp.SetValueY(item.Percentage); 

    chart.Series[item.Name].Points.Add(dp); 

    index++; 
} 

Ich weiß nicht, entweder diese Lösung ist in Ordnung oder nicht. Aber irgendwann hat es mein Problem gelöst.

+0

Ein Workaround; sollte hier nicht nötig sein, aber wenn es funktioniert, ok. – TaW

+0

Der leere Datenpunkt ist die Lösung für die Lücke im 1. Bild. Ich dekoriere einfach meinen Code, um sicherzustellen, dass die Anforderung zuerst erfüllt wird. Während ich noch Neuling in C# bin, weiß ich nicht, ob meine Aktion die beste ist. Mein Beitrag hier sucht nur nach Fachwissen wie Sie hier. Wie auch immer, danke @ TaW für Ihre Antworten. –

Verwandte Themen