2010-12-29 6 views
3

Ich verursache ein Diagramm (DataVisualization.Charting.Chart) programmatisch, die ein gestapeltes Balkendiagramm ist.asp.net-Charts: Legend überlappend mit der X-Achse

Ich füge auch Legende Einträge es programmatisch. Ich möchte die Legende unten in der Tabelle zeigen.

Aber, während dies zu tun, overlapps die Legende mit der X-Achse des Diagramms.

Hier ist der Code Ich verwende:

Private Function GetLegend(ByVal legendName As String, ByVal s As Single) As  System.Windows.Forms.DataVisualization.Charting.Legend 

Dim objLegend As System.Windows.Forms.DataVisualization.Charting.Legend = New System.Windows.Forms.DataVisualization.Charting.Legend() 

objLegend.Name = legendName 
objLegend.Font = New System.Drawing.Font("Verdana", s) 
objLegend.IsDockedInsideChartArea = False 
objLegend.Docking = Docking.Bottom 
Return objLegend 
End Function 

Unter Anweisung fügt hinzu, dass Legende zum Diagramm

_msChart.Legends.Add(GetLegend("SomeValue1", 10.0F)) 

Jede Idee, was fehlt? Ich möchte die Legende nur unten anzeigen, aber sie sollte nicht mit der X-Achse überlappen.

Antwort

2

Ich hatte das gleiche Problem heute. Versuchen Sie:

objLegend.Position.Auto = true 
objLegend.DockedToChartArea = "yourChartAreaName" 

Das ist nicht mir geholfen hat, aber ich fand im Netz, die dies hilfreich sein könnte (und saubere Lösung).

Was für mich tatsächlich gearbeitet bewegte Diagrammfläche Platz für Legende zu machen, damit es nicht mehr überlappt. Meine Legende war oben so dieser Code für mich gearbeitet:

chart.ChartAreas[0].Position.Y = 15 

Sie können versuchen, es stattdessen Ändern der Größe, es zwingt zum Beispiel auf 20 Pixel kürzer als chart.Size.

Hoffe, das hilft.

0

Ich hatte ein überlappende Legende/Chart als auch Flächenproblem, aber keines der anderen Vorschläge hier schien keinen Unterschied zu machen. Ich denke, das Problem rührt von Legendentext-Umbruch auf zwei Zeilen her, und die Dimensionierungsalgorithmen berücksichtigen dies nicht.

Die Ideen hier hat mich allerdings deutlicher über das Problem nachzudenken, und ich war in der Lage Kontrolle der Größe und Position des Bereichs Diagramm, das die folgenden verwenden.

Chart1.ChartAreas[0].InnerPlotPosition = new ElementPosition(15, 5, 90, 75); 

Es gibt nicht viel intellisense auf diesen Parametern, aber so gut wie ich ableiten könnte, sind die Parameter alle Prozentsätze des gesamten Diagrammbereich (Ich dachte zunächst könnten sie Pixelwerte sein und bekam einige sehr ungerade Ergebnisse). Was ich oben geschrieben habe, würde also festlegen, dass der Plotbereich bei 15% vom linken Rand des Chartbildes und 5% vom oberen Rand beginnt und eine Breite von 90% und eine Höhe von 75% hat.