Шпаргалка по ZedGraph. Как не отображать некоторые кривые в легенде

Этот пример показывает два способа сделать так, чтобы кривые не отображались в легенде.
Все примеры объединены в одном solution для Visual Studio 2005 и написаны на языке C#, скачать их можно отсюда.
Способ первый
Достаточно в качестве имени кривой задать пустую строку.
Проект в примере - NoName.
public partial class Form1 : Form
{
public Form1 ()
{
InitializeComponent ();
DrawGraph ();
}
// Отображаемая функция
private double f (double x)
{
if (x == 0)
{
return 1;
}
return Math.Sin (x) / x;
}
/// <summary>
/// Нарисовать кривую
/// </summary>
/// <param name="pane"></param>
/// <param name="k">Коэффициент для функции</param>
/// <param name="name">Имя кривой</param>
/// <param name="color">Цвет для графика</param>
private void AddCurve (GraphPane pane, double k, string name, Color color)
{
PointPairList list = new PointPairList ();
double xmin = -20;
double xmax = 20;
for (double x = xmin; x <= xmax; x += 0.1)
{
list.Add (x, f (k * x));
}
LineItem myCurve = pane.AddCurve (name, list, color, SymbolType.None);
// Включим сглаживание
myCurve.Line.IsSmooth = true;
}
private void DrawGraph ()
{
// Получим панель для рисования
GraphPane pane = zedGraph.GraphPane;
pane.CurveList.Clear ();
// Нарисуем три кривые с разными именами
// Первые два графика будут перечислены в легенде
AddCurve (pane, 1.0, "k = 1", Color.Blue);
AddCurve (pane, 0.5, "k = 0.5", Color.Black);
// Этот график в легенде не будет отображаться
AddCurve (pane, 0.1, "", Color.Red);
// Обновим оси и график
zedGraph.AxisChange ();
zedGraph.Invalidate ();
}
}
{
public Form1 ()
{
InitializeComponent ();
DrawGraph ();
}
// Отображаемая функция
private double f (double x)
{
if (x == 0)
{
return 1;
}
return Math.Sin (x) / x;
}
/// <summary>
/// Нарисовать кривую
/// </summary>
/// <param name="pane"></param>
/// <param name="k">Коэффициент для функции</param>
/// <param name="name">Имя кривой</param>
/// <param name="color">Цвет для графика</param>
private void AddCurve (GraphPane pane, double k, string name, Color color)
{
PointPairList list = new PointPairList ();
double xmin = -20;
double xmax = 20;
for (double x = xmin; x <= xmax; x += 0.1)
{
list.Add (x, f (k * x));
}
LineItem myCurve = pane.AddCurve (name, list, color, SymbolType.None);
// Включим сглаживание
myCurve.Line.IsSmooth = true;
}
private void DrawGraph ()
{
// Получим панель для рисования
GraphPane pane = zedGraph.GraphPane;
pane.CurveList.Clear ();
// Нарисуем три кривые с разными именами
// Первые два графика будут перечислены в легенде
AddCurve (pane, 1.0, "k = 1", Color.Blue);
AddCurve (pane, 0.5, "k = 0.5", Color.Black);
// Этот график в легенде не будет отображаться
AddCurve (pane, 0.1, "", Color.Red);
// Обновим оси и график
zedGraph.AxisChange ();
zedGraph.Invalidate ();
}
}
Способ второй
Можно воспользоваться свойством Label.IsVisible из класса CurveItem и, соответственно, его производных.
Проект в примере - NoName2.
public partial class Form1 : Form
{
public Form1 ()
{
InitializeComponent ();
DrawGraph ();
}
private double f (double x)
{
if (x == 0)
{
return 1;
}
return Math.Sin (x) / x;
}
/// <summary>
/// Нарисовать кривую
/// </summary>
/// <param name="pane"></param>
/// <param name="k">Коэффициент для функции</param>
/// <param name="name">Имя кривой</param>
/// <param name="color">Цвет для графика</param>
private void AddCurve (GraphPane pane, double k, string name, bool labelVisible, Color color)
{
PointPairList list = new PointPairList ();
double xmin = -20;
double xmax = 20;
for (double x = xmin; x <= xmax; x += 0.1)
{
list.Add (x, f (k * x));
}
LineItem myCurve = pane.AddCurve (name, list, color, SymbolType.None);
// Установим видимость имени для кривой
myCurve.Label.IsVisible = labelVisible;
}
private void DrawGraph ()
{
// Получим панель для рисования
GraphPane pane = zedGraph.GraphPane;
pane.CurveList.Clear ();
// Нарисуем три кривые с разными именами
// Первые два графика будут перечислены в легенде
AddCurve (pane, 1.0, "k = 1", true, Color.Blue);
AddCurve (pane, 0.5, "k = 0.5", true, Color.Black);
// Этот график в легенде не будет отображаться
AddCurve (pane, 0.1, "k = 0.1", false, Color.Red);
// Обновим оси и график
zedGraph.AxisChange ();
zedGraph.Invalidate ();
}
}
{
public Form1 ()
{
InitializeComponent ();
DrawGraph ();
}
private double f (double x)
{
if (x == 0)
{
return 1;
}
return Math.Sin (x) / x;
}
/// <summary>
/// Нарисовать кривую
/// </summary>
/// <param name="pane"></param>
/// <param name="k">Коэффициент для функции</param>
/// <param name="name">Имя кривой</param>
/// <param name="color">Цвет для графика</param>
private void AddCurve (GraphPane pane, double k, string name, bool labelVisible, Color color)
{
PointPairList list = new PointPairList ();
double xmin = -20;
double xmax = 20;
for (double x = xmin; x <= xmax; x += 0.1)
{
list.Add (x, f (k * x));
}
LineItem myCurve = pane.AddCurve (name, list, color, SymbolType.None);
// Установим видимость имени для кривой
myCurve.Label.IsVisible = labelVisible;
}
private void DrawGraph ()
{
// Получим панель для рисования
GraphPane pane = zedGraph.GraphPane;
pane.CurveList.Clear ();
// Нарисуем три кривые с разными именами
// Первые два графика будут перечислены в легенде
AddCurve (pane, 1.0, "k = 1", true, Color.Blue);
AddCurve (pane, 0.5, "k = 0.5", true, Color.Black);
// Этот график в легенде не будет отображаться
AddCurve (pane, 0.1, "k = 0.1", false, Color.Red);
// Обновим оси и график
zedGraph.AxisChange ();
zedGraph.Invalidate ();
}
}
Вернуться к остальным примерам
Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.