Шпаргалка по ZedGraph. Как построить график y = f(x) по точкам | jenyay.net

Шпаргалка по ZedGraph. Как построить график y = f(x) по точкам

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

Проект в примере - SimpleSignal

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

    return Math.Sin (x) / x;
}

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

    // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
    pane.CurveList.Clear ();

    // Создадим список точек
    PointPairList list = new PointPairList ();

    double xmin = -50;
    double xmax = 50;

    // Заполняем список точек
    for (double x = xmin; x <= xmax; x += 0.01)
    {
        // добавим в список точку
        list.Add (x, f(x));
    }

    // Создадим кривую с названием "Sinc",
    // которая будет рисоваться голубым цветом (Color.Blue),
    // Опорные точки выделяться не будут (SymbolType.None)
    LineItem myCurve = pane.AddCurve ("Sinc", list, Color.Blue, SymbolType.None);

    // Вызываем метод AxisChange (), чтобы обновить данные об осях.
    // В противном случае на рисунке будет показана только часть графика,
    // которая умещается в интервалы по осям, установленные по умолчанию
    zedGraph.AxisChange ();

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

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

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

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



Владимир 20.03.2013 - 12:37

очистка от лишнего

ничего другого не вижу как построить заново график frowning smiley
Code//очистим график

                    pane.CurveList.Clear();

                // построим заново
                   DrawGraph();

                        // Обновим график

                        zedGraph.Invalidate();Code

Jenyay 20.03.2013 - 12:52

Владимир, пишите лучше вопросы на форум, там больше вероятность, что вопрос заметят.

Владимир 05.04.2013 - 12:32

на форуме нет ветки

на форуме нет ветки по данной теме, вернее она есть, но закрыта confused smiley

Jenyay 05.04.2013 - 15:57

Вы создавайте отдельную тему. Там весь подраздел форума посвящен ZedGraph.

Айдар 16.10.2014 - 21:17

Вопрос

Рисуя таким способом, нажимая несколько раз кнопку рисовать, у меня бывает так, что первая и последняя точка соединены линией. как этого избежать?

Саша 17.01.2016 - 11:15

Как забрать из textBox значения и применить их в построение точек?

 try
            {
                if ((textBox7.Text.Length == 0) || (textBox8.Text.Length == 0) || (textBox9.Text.Length == 0) || (textBox10.Text.Length == 0))
                {
                a = int.Parse(textBox1.Text);
                n = int.Parse(textBox2.Text);
                m = int.Parse(textBox3.Text);
                v = int.Parse(textBox4.Text);                    
                d = int.Parse(textBox5.Text); 
                r = int.Parse(textBox6.Text);
               }
                else
               {
                b = int.Parse(textBox7.Text);
                w = int.Parse(textBox8.Text);
                t = int.Parse(textBox9.Text);
                c = int.Parse(textBox10.Text);
               }
                x = int.Parse(koefx.Text);
                z = int.Parse(koefxend.Text);
                CreateGraph(koefr);
            }

            catch
            {
                MessageBox.Show("Неверные значения коэффициентов!");
                textBox1.Focus();
            }
        }

        private Color color;
        private void CreateGraph(ZedGraphControl zgc)
        {
            // Получим панель для рисования
            GraphPane g = zgc.GraphPane;
            g.Title.Text = "Зависимость ККД от R";
            g.XAxis.Title.Text = "R";
            g.YAxis.Title.Text = "ККД (η)";
            g.CurveList.Clear();
            // Списки точек для двух графиков
            PointPairList list1 = new PointPairList();
            PointPairList list2 = new PointPairList();
            for (int i = x; i < z; i++)
            {
                int x1=i;
                p = n / (n + d);
                y = a / (v + a);
                s = m / (r + m);

                list1.Add(x, p);
                list2.Add(x, y);


            }
            // Создадим две кривые
            LineItem myCurve1 = g.AddCurve("Curve 1", list1, color, SymbolType.Star);
            LineItem myCurve2 = g.AddCurve("Curve 2", list2, color, SymbolType.Star);

            // Вызываем метод AxisChange (), чтобы обновить данные об осях. 
            // В противном случае на рисунке будет показана только часть графика, 
            // которая умещается в интервалы по осям, установленные по умолчанию
            zgc.AxisChange();
            // Обновляем график
            zgc.Refresh();


        }

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

Культа 18.10.2009 - 01:38

Вопрос

Вот у меня есть точки определённые на графике. Как мне их обвести чтоли на графике??
Ну в общем есть 2 графика, и мне надо выделить пару банальных точек.
как это сделать?

Jenyay 18.10.2009 - 08:55

@Культа

Посмотрите этот пример. Можно нужные точки отдельно нарисовать.

graber 27.11.2009 - 16:39

а как убрать график?
то есть, например, по нажатия левой кнопкой у меня рисуется график, а по нажатию правой удаляется.
пробовал использовать myCurve.Clear(), но не получается.

Jenyay 27.11.2009 - 21:27

Попробуйте pane.CurveList.Remove(...). В принципе, список кривых - это pane.CurveList.

graber 29.11.2009 - 21:34

не работает почему-то...
может я что-то не так делаю?
на графике рисуются несколько линий, по нажатию на кнопку должна убраться одна линия.
в обработчике сообщения нажатия по кнопке пишу:

private void button2_MouseClick(object sender, MouseEventArgs e)
{

    flag1 = false;           

}

в функциии рисования графика пишу:
if (flag1 == false)
{

     myPane.CurveList.Remove(myCurve1);
     zgc.Invalidate();

}

Jenyay 02.12.2009 - 22:08

graber, не обещаю, но постараюсь в выходные пример с удалением линий

graber 06.12.2009 - 23:13

спасибо большое, уже разобрался...
надо было прописывать zedGraphControl1.Refresh();