Шпаргалка по ZedGraph. Как управлять отображением больших и маленьких чисел на осях

Zedgraph по умолчанию пытается избавиться от очень больших или очень маленьких чисел на осях. Например, если у нас по оси X отложено время в наносекундах (10^-9), а по оси Y отложены большие амплитуды, то внешний вид графика будет следующим (обратите внимание на подписи к осям):

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

Для этого мы будем изменять параметры заголовка осей (Title) и их масштаб (Scale).

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

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

public Form1 ()
{
    InitializeComponent ();

    DrawGraph ();
}

/// <summary>
/// Отображаемая функция
/// </summary>
/// <param name="x"></param>
/// <returns></returns>
private double f (double x)
{
    double ky = 1.0e6;
    double kx = 1.0e9;

    if (x == 0)
    {
        return ky;
    }

    return ky * Math.Sin (x * kx) / (x * kx);
}

private void DrawGraph ()
{
    GraphPane pane = zedGraph.GraphPane;

    pane.CurveList.Clear ();

    // Нарисуем график. По горизонтали у нас будут отложены маленькие значения,
    // а по вертикали - большие
    PointPairList list = new PointPairList ();

    // Интервал изменения координаты X
    double xmin = 0;
    double xmax = 15e-9;

    for (double x = xmin; x <= xmax; x += 20e-12)
    {
        list.Add (x, f(x));
    }

    LineItem myCurve = pane.AddCurve ("", list, Color.Blue, SymbolType.None);

    // !!! Установим параметры отображения больших и маленьких чисел на осях.

    // Параметры оси X
    // !!! Напишем, что по иси X у нас отложено время в нс
    pane.XAxis.Title.Text = "t, нс";

    // !!! Просто уберем отображение степени в подписи оси X
    pane.XAxis.Title.IsOmitMag = true;

    // !!! Сами установим коэффициент, на который умножается значение по оси X
    // !!! В данном случае значение будет умножаться на 10^-9
    pane.XAxis.Scale.Mag = -9;

    // Параметры оси Y
    // !!! Установим коэффициент, на который умножается значение по оси Y
    // !!! В данном случае значение будет умножаться на 10^0 = 1, то есть умножения не будет
    pane.YAxis.Scale.Mag = 0;

    zedGraph.AxisChange ();
    zedGraph.Invalidate ();
}

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

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

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



Дмитрий 04.03.2011 - 18:13

случай с одним значением

по оси Y получаю одно значение - 1. И отображаются 4 метки со значением 1. Как убрать лишние?


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