ASP.NET图表:图例与X轴重叠

3

我正在以编程方式创建一个堆积条形图 (DataVisualization.Charting.Chart),并且还在以编程方式向其中添加图例项。我希望将图例显示在图表底部。

但是,在这样做时,图例会与图表的 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个回答

2
我今天也遇到了同样的问题。尝试添加以下内容:
objLegend.Position.Auto = true
objLegend.DockedToChartArea = "yourChartAreaName"

这并没有帮助我,但我在网上找到了一些可能有用的信息(并且是干净的解决方案)。

对我实际起作用的是移动图表区域以为图例腾出空间,使其不再重叠。我的图例在顶部,所以这段代码适用于我:

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

你可以尝试调整大小,强制使其比chart.Size短20像素。

希望这可以帮到你。


0
我也遇到了重叠的图例/图表区域问题,但这里提出的其他建议似乎都没有什么作用。我认为问题源自于图例文字换行为两行,而尺寸算法没有考虑到这一点。
不过,这里的想法让我更清楚地思考了这个问题,最终我能够使用以下方法控制图表区域的大小和位置。
Chart1.ChartAreas[0].InnerPlotPosition = new ElementPosition(15, 5, 90, 75);

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接