Шпаргалка по ZedGraph. Как не отображать некоторые кривые в легенде | jenyay.net

Шпаргалка по ZedGraph. Как не отображать некоторые кривые в легенде

Этот пример показывает два способа сделать так, чтобы кривые не отображались в легенде.

Все примеры объединены в одном solution для Visual Studio 2005 и написаны на языке C#, скачать их можно отсюда.

Способ первый

Достаточно в качестве имени кривой задать пустую строку.

Проект в примере - NoName.

    public partial class Form1 : Form
    {
        public Form1 ()
        {
            InitializeComponent ();

            DrawGraph ();
        }

        // Отображаемая функция
        private double f (double x)
        {
            if (x == 0)
            {
                return 1;
            }

            return Math.Sin (x) / x;
        }

        /// <summary>
        /// Нарисовать кривую
        /// </summary>
        /// <param name="pane"></param>
        /// <param name="k">Коэффициент для функции</param>
        /// <param name="name">Имя кривой</param>
        /// <param name="color">Цвет для графика</param>
        private void AddCurve (GraphPane pane, double k, string name, Color color)
        {
            PointPairList list = new PointPairList ();

            double xmin = -20;
            double xmax = 20;

            for (double x = xmin; x <= xmax; x += 0.1)
            {
                list.Add (x, f (k * x));
            }

            LineItem myCurve = pane.AddCurve (name, list, color, SymbolType.None);

            // Включим сглаживание
            myCurve.Line.IsSmooth = true;
        }

        private void DrawGraph ()
        {
            // Получим панель для рисования
            GraphPane pane = zedGraph.GraphPane;

            pane.CurveList.Clear ();

            // Нарисуем три кривые с разными именами
            // Первые два графика будут перечислены в легенде
            AddCurve (pane, 1.0, "k = 1", Color.Blue);
            AddCurve (pane, 0.5, "k = 0.5", Color.Black);

            // Этот график в легенде не будет отображаться
            AddCurve (pane, 0.1, "", Color.Red);

            // Обновим оси и график
            zedGraph.AxisChange ();
            zedGraph.Invalidate ();
        }

    }

Способ второй

Можно воспользоваться свойством Label.IsVisible из класса CurveItem и, соответственно, его производных.

Проект в примере - NoName2.

    public partial class Form1 : Form
    {
        public Form1 ()
        {
            InitializeComponent ();

            DrawGraph ();
        }

        private double f (double x)
        {
            if (x == 0)
            {
                return 1;
            }

            return Math.Sin (x) / x;
        }

        /// <summary>
        /// Нарисовать кривую
        /// </summary>
        /// <param name="pane"></param>
        /// <param name="k">Коэффициент для функции</param>
        /// <param name="name">Имя кривой</param>
        /// <param name="color">Цвет для графика</param>
        private void AddCurve (GraphPane pane, double k, string name, bool labelVisible, Color color)
        {
            PointPairList list = new PointPairList ();

            double xmin = -20;
            double xmax = 20;

            for (double x = xmin; x <= xmax; x += 0.1)
            {
                list.Add (x, f (k * x));
            }

            LineItem myCurve = pane.AddCurve (name, list, color, SymbolType.None);

            // Установим видимость имени для кривой
            myCurve.Label.IsVisible = labelVisible;
        }

        private void DrawGraph ()
        {
            // Получим панель для рисования
            GraphPane pane = zedGraph.GraphPane;

            pane.CurveList.Clear ();

            // Нарисуем три кривые с разными именами
            // Первые два графика будут перечислены в легенде
            AddCurve (pane, 1.0, "k = 1", true, Color.Blue);
            AddCurve (pane, 0.5, "k = 0.5", true, Color.Black);

            // Этот график в легенде не будет отображаться
            AddCurve (pane, 0.1, "k = 0.1", false, Color.Red);

            // Обновим оси и график
            zedGraph.AxisChange ();
            zedGraph.Invalidate ();
        }      
    }

Вернуться к остальным примерам

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
4.5 stars

Рейтинг 4.2/5. Всего 5 голос(а, ов)




Подписаться на комментарии
Автор:
Тема:
 Ваш комментарий
 
 
Введите код 811