我正在以编程方式创建一个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轴重叠。
答案 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%。