Диаграммы asp.net: легенда, перекрывающаяся с осью X - PullRequest
3 голосов
/ 29 декабря 2010

Я создаю диаграмму (DataVisualization.Charting.Chart) программно, которая представляет собой столбчатую диаграмму с накоплением.

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

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

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

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 ]

2 голосов
/ 11 января 2011

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

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

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

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

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

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

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

0 голосов
/ 30 ноября 2012

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

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

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

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

...