Шпаргалка по ZedGraph. Как при автоматическом подборе масштаба учитывать только видимую часть графика

Допустим, у нас есть функция, которая посчитана в некотором интервале. Если в компоненте ZedGraph мы хотим показать только часть этого графика (см. пример Как изменить пределы отображаемой области по осям), но при этом не будем явно задавать интервал изменения по оси Y, то по умолчанию автомасштабирование по оси Y будет осуществляться с учетом всех точек кривой, даже не попадающих в отображаемую область. При этом мы получим примерно следующий вид графика (по оси Y остается много лишнего места):

Однако, если установить значение параметра IsBoundedRanges как true, то автомасштабирование будет осуществляться только с учетом видимой части графика. В результате мы получим следующий вид графика:

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

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

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

        DrawGraph ();
    }

    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));
        }

        // Создадим кривую
        LineItem myCurve = pane.AddCurve ("", list, Color.Blue, SymbolType.None);

        // Установим такой интервал изменения по оси X, чтобы наибольшие значения графика
        // остались за пределами отображаемой области
        pane.XAxis.Scale.Min = 10;
        pane.XAxis.Scale.Max = 50;

        // По оси Y установим автоматический подбор масштаба
        pane.YAxis.Scale.MinAuto = true;
        pane.YAxis.Scale.MaxAuto = true;

        // !!! Установим значение параметра IsBoundedRanges как true.
        // !!! Это означает, что при автоматическом подборе масштаба
        // !!! нужно учитывать только видимый интервал графика
        pane.IsBoundedRanges = true;

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

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

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

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

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




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