2010-12-29 4 views
3

Я создаю диаграмму (DataVisualization.Charting.Chart) программно, которая представляет собой стробированную гистограмму.диаграммы asp.net: Легенда перекрывается с осью X

Я также добавляю к нему программные обозначения Legend. Я хочу показать Легенду внизу диаграммы.

Но при этом легенда перекрывается с осью X диаграммы.

Вот код, я использую:

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 

Ниже заявление добавляет, что Легенда к диаграмме

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

Любая идея, чего не хватает? Я хочу показать легенду только внизу, но она не должна перекрываться с осью X.

ответ

2

У меня была такая же проблема сегодня. Попробуйте добавить:

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

Это не помогло мне, но я нашел в сети, что это может быть полезно (и чистое решение).

Что на самом деле работало для меня, было перемещение области графика, чтобы освободить место для легенды, чтобы оно больше не перекрывалось. Моя легенда была на вершине так что этот код работает для меня:

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

Вы можете попробовать изменить его размер вместо этого, заставляя его быть, например, 20 пикселей короче chart.Size.

Надеюсь, это поможет.

0

У меня была проблема перекрытия с легендой/диаграммой, но ни один из других предложений здесь, казалось, не имел никакого значения. Я думаю, что проблема связана с переносом текста легенды на две строки и алгоритмами калибровки без учета этого.

Идеи здесь заставили меня думать более четко о проблеме, хотя, и я смог контролировать размер и положение области диаграммы, используя следующее.

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

Там не так много IntelliSense по этим параметрам, но так же, как я мог вывести параметры все проценты от общей площади диаграммы (я сначала думал, что они могут быть значения пикселей и получил некоторые очень странные результаты). Итак, то, что я написал выше, установит, что участок участка начнется с 15% от левого края изображения диаграммы и на 5% вниз сверху, и будет иметь ширину 90% и высоту 75%.