Шпаргалка по ZedGraph. Как управлять отображением больших и маленьких чисел на осях
Zedgraph по умолчанию пытается избавиться от очень больших или очень маленьких чисел на осях. Например, если у нас по оси X отложено время в наносекундах (10^-9), а по оси Y отложены большие амплитуды, то внешний вид графика будет следующим (обратите внимание на подписи к осям):
Данный пример показывает как можно управлять отображением таких больших и маленьких чисел таким образом, чтобы график стал выглядеть следующим образом:
Для этого мы будем изменять параметры заголовка осей (Title) и их масштаб (Scale).
Все примеры объединены в одном solution для Visual Studio 2005 и написаны на языке C#, скачать их можно отсюда.
Проект в примере - Magnitude
{
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.