在.net图表图例中仅显示添加的自定义项目

时间:2014-10-02 21:34:50

标签: c# asp.net .net charts asp.net-charts

我有很多图表我正在绘图,对于一些我需要给每个X值一个自定义颜色,并在图例中也有该项目。以下代码实现了这一点,但在图例中总是存在第一个默认值,现在是无意义的。如何删除/隐藏/清除原始默认图例项?仅供参考,chartColors数组只是一个循环的颜色数组。

mainChart.Legends.Add(new Legend("legend"));
mainChart.Legends["legend"].Docking = Docking.Bottom;

foreach (Series ser in mainChart.Series)
{
    int i = 0;
    foreach (DataPoint point in ser.Points)
    {
        point.Color = chartColors[i % chartColors.Count()];
        mainChart.Legends["legend"].CustomItems.Add(point.Color,point.AxisLabel);
        i++;
    }
}

根据http://msdn.microsoft.com/en-us/library/vstudio/dd456659(v=vs.100).aspx

“此集合中的图例项目始终附加到图例中其他图例项目的末尾。”

所以为了澄清我的问题,如何删除“其他图例项目”

编辑:我找到了这个答案,但它适用于winforms,我不知道如何调用他们添加的功能

WinForms.Charting suppress autogenerating legend

3 个答案:

答案 0 :(得分:0)

好的,如果其他人需要这样做,我会发布帖子,我使用发布的问题中的awnser作为基础,但在调用方法之前添加了点,然后只删除了非自定义的

    protected void chartarea1_CustomizeLegend(object sender,System.Web.UI.DataVisualization.Charting.CustomizeLegendEventArgs e)
    {
        int customItems = ((Chart)sender).Legends[0].CustomItems.Count();
        if (customItems>0)
        {
            int numberOfAutoItems = e.LegendItems.Count()-customItems;
            for (int i = 0; i < numberOfAutoItems; i++)
            {
                e.LegendItems.RemoveAt(0);
            }
        }

    }

答案 1 :(得分:0)

为您的图表中的所有系列做下一步:

series .IsVisibleInLegend = false;

答案 2 :(得分:0)

mainChart.Series[0].IsVisibleInLegend = false;