asp.net图表:图例与X轴重叠

时间:2010-12-29 13:28:55

标签: charts legend legend-properties

我正在以编程方式创建一个Chart(DataVisualization.Charting.Chart),这是一个Stacked Bar图表。

我还以编程方式添加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 个答案:

答案 0 :(得分:2)

我今天遇到了同样的问题。尝试添加:

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

这对我没有帮助,但我在网上发现这可能会有所帮助(以及干净的解决方案)。

实际上对我有用的是移动图表区域为图例腾出空间,使其不再重叠。我的传说是最重要的,所以这段代码对我有用:

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

您可以尝试重新调整大小,例如强制它比chart.Size短20个像素。

希望这有帮助。

答案 1 :(得分:0)

我有一个重叠的传奇/图表区域问题,但这里没有其他建议似乎有任何区别。我认为这个问题源于传奇文本换行到两行,并且调整算法没有考虑到这一点。

这里的想法让我更清楚地思考这个问题,并且我能够使用以下方法控制图表区域的大小和位置。

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

这些参数没有太多的智能感知,但是我可以推断出,参数都是总图表区域的百分比(我最初认为它们可能是像素值并且得到了一些非常奇数结果)。所以我上面写的将绘图区域设置为从图表图像的左边缘开始15%,从顶部开始向下5%,宽度为90%,高度为75%。