Шпаргалка по ZedGraph. Как использовать оси в календарном формате | jenyay.net

Шпаргалка по ZedGraph. Как использовать оси в календарном формате

Компонент ZedGraph позволяет откладывать по осям даты. Этот пример демонстрирует, как создавать кривые, которые используют такие оси. Этот же пример показывает, как в этом случае изменять масштаб графика.

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

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

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

        DrawGraph ();
    }


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

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

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

        // Первая дата на оси X
        DateTime startDate = new DateTime (2011, 02, 25);

        // Количество отсчетов по оси X (количество дней)
        int daysCount = 20;

        Random rnd = new Random();

        // Заполняем список точек
        for (int i = 0; i < daysCount; i++)
        {
            // Текущая точка по оси X. Один отсчет - один день
            DateTime currentDate = startDate.AddDays (i);

            // Текущее значение по оси Y
            double yValue = rnd.NextDouble () * 0.2 + 0.9;

            // Используем класс XDate для преобразования DateTime к типу Double.
            // Используется неявное приведение к типу Double.
            // Внутри класса даты хранятся в виде дробных чисел.
            // Вместо DateTime можно было бы сразу использовать тип XDate
            list.Add (new XDate (currentDate), yValue);
        }

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

        // Установим, что по оси X у нас откладываются даты,
        pane.XAxis.Type = AxisType.Date;

        // Для наглядности установим масштаб по оси Y
        pane.YAxis.Scale.Min = 0;
        pane.YAxis.Scale.Max = 1.4;

        // Пример изменения масштаба по оси, где откладываютя даты
        // Есть несколько перегруженных конструкторов класса XDate, мы будем использовать
        // тот, что принимает год, месяц и число соответственно.
        pane.XAxis.Scale.Min = new XDate (2011, 02, 20);
        pane.XAxis.Scale.Max = new XDate (2011, 03, 20);

        // Вызываем метод AxisChange (), чтобы обновить данные об осях.
        zedGraph.AxisChange ();

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

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

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

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



Игорь 18.11.2011 - 10:45

Неправильно откладываются даты по оси

Здравствуйте.
Подскажите, пожалуйста.
По оси Х как в данном примере отложил даты. Но разбивается ось неверно, видимо, потому, что даты преобразовываются в тип double. Получается 1 . . . 6 . . . 11 и т.д., должно быть 1 . . . 5 . . . 9. Как можно указать, что размер шага - день?
Спасибо.

Jenyay 18.11.2011 - 11:18

Не понял вопроса. Можно показать скриншот того, что получается, и что хотелось бы.

Наталья 18.11.2011 - 13:39

Неправильно откладываются даты по оси

Добрый день.
Столкнулась с такой же проблемой. Вот ссылка на скриншот:
http://img411.imageshack.us/img411/9154/zedgraphdatex.jpg

AKR 18.11.2011 - 13:45

Ребята подскажите как побороть. Очень нужно решение.
Нужно чтобы градация была правильная. Т.е.:
1) Чтобы между датой 1-го и 6-го числа всегда было говно 4 шага;
2) Желательно чтобы на каждом шаге отображалась дата.

AKR 18.11.2011 - 13:45

т.е. ровно 4 шаго :)

AKR 18.11.2011 - 13:46

шага... frowning smiley
В общем вы думаю поняли о чём я :)

AKR 18.11.2011 - 13:48

Немного добавлю к первому пункту:
1) ... Вне зависимости от масштаба графика.

Jenyay 18.11.2011 - 14:16

Попробуйте поиграться вот с этим примером - http://jenyay.net/ZedGraph/AxisTicks, может поможет, хотя сам я пока не пробовал его применять для оси с датами.

Наталья 18.11.2011 - 14:51

Если выставить MajorStep = 1, в принципе, получается то, что и нужно, при этом подписывается каждая риска. Желательно, конечно, чтоб подпись шла как отображено в прикрепленном рисунке.

Jenyay 18.11.2011 - 16:20

А если поставить MajorStep = 5, а MinorStep = 1?

Наталья 21.11.2011 - 07:30

Отлично! То, что нужно. Спасибо.

Наталья 24.11.2011 - 08:19

И здесь же позвольте еще вопрос. При увеличения масштаба получается вот такая картина:

6.10.11 6.10.11 6.10.11 7.10.11 7.10.11 7.10.11, а нужно вот так:
6.10.11 7.10.11
Т.е. до какого-то масштаба отображается правильно, а потом происходит дублирование дат, как это можно исправить?
Спасибо.

Наталья 24.11.2011 - 08:41

Вот после увеличения отображает правильно:http://radikal.ru/F/s52.radikal.ru/i138/1111/43/7e67fa7afc36.png.html
И вот увеличино еще раз, некорректно:
http://radikal.ru/F/s017.radikal.ru/i415/1111/37/e22ab582ea84.png.html

Jenyay 24.11.2011 - 19:46

Если устанавливать MajorStep и MinorStep, то шаг меток по идее не должен меняться при масштабировании.

Культа 24.03.2012 - 23:33

Форматы

Мне нужно градацию сделать через радианы

по иксы отложить -pi....-pi/2.....pi

iEcho 24.06.2013 - 20:19

Формат

А как исключить выходные дни из шкалы оси?

Alexey 06.03.2014 - 03:36

Ограничение масштабирования

Как можно ограничить масштабирование datetime?
1)Max - месяца.
2)Min - минута.

Alexey 06.03.2014 - 03:49

iEcho 24.06.2013 - 20:19 Формат А как исключить выходные дни из шкалы оси?

iEcho, можно воспользоваться разрывами


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