日期:2014-05-20  浏览次数:20836 次

zedGraph柱状图显示不面颜色
用zedGraph画柱状图,现在要实现Y轴大于100显示为红色,小于100则用其它颜色展现,请问zedGraph能为各个数据点设置不同的颜色吗?没找到相关属性,最近被zedGraph搞得头大。
------最佳解决方案--------------------
没有直接的属性可以设置,倒是可以把大小于100的数据用两个数组来存取,可参考:
        public void CreateChart(ZedGraphControl zgc)
        {
            GraphPane myPane = zgc.GraphPane;
            myPane.XAxis.Title.IsVisible = false;
            myPane.YAxis.Title.Text = "Value";
           
            string[] xLables = { "标签1", "标签2", "标签3", "标签4", "标签5", "标签6" };
            /* 测试数据,注意这里的数据控制,两个数组中的两个对应项
             * 务必保持一个值为0:
             * 比如这里的y1[0]=110,则y2[0]=0;y2[1]=99,则y1[1]=0 */
            double[] y1 = { 110, 0, 120, 0, 0, 123 }; //用来保存大于100的数据
            double[] y2 = { 0, 99, 0, 35, 80, 0 }; //用来保存小于100的数据

            // 创建Curve1,显示红色的柱子
            CurveItem myCurve = myPane.AddBar("Curve 1", null, y1, Color.Red);
            // 创建Curve2,显示绿色的柱子 
            myCurve = myPane.AddBar("Curve 2", null, y2, Color.Green);

            // 设置x轴为文本显示
            myPane.XAxis.Type = AxisType.Text;
            // 设置x轴文本标签值
            myPane.XAxis.Scale.TextLabels = xLables;
            // 设置x轴标签字体
            myPane.XAxis.Scale.FontSpec.Family = "华文行楷";

            // 为每个“柱子”上方添加值标签
            for (int i = 0; i < y1.Length; i++)   
            {
                double Y = y1[i] == 0 ? y2[i] : y1[i];   
                TextObj text = new TextObj(Y.ToString(), (i + 1), Y + 3.0);

                text.FontSpec.Border.IsVisible = false;
                text.FontSpec.Fill.IsVisible = false;