Шпаргалка по ZedGraph. Что такое кластеры и как их использовать в гистограммах
Интересной особенностью при построении гистограмм с помощью компонента ZedGraph является то, что он может объединять несколько гистограмм в так называемые кластеры, когда на одной отметке располагаются несколько столбцов.
Этот пример показывает как создавать кластеры и регулировать расстояние между столбцами внутри кластера. Чтобы регулировать расстояние между самими кластерами, смотрите пример Как сделать так, чтобы столбцы в гистограмме прилегали друг к другу вплотную.
Все примеры объединены в одном solution для Visual Studio 2005 и написаны на языке C#, скачать их можно отсюда.
Проект в примере - BarClusters
public partial class Form1 : Form
{
public Form1 ()
{
InitializeComponent ();
DrawGraph ();
}
private void DrawGraph ()
{
// Получим панель для рисования
GraphPane pane = zedGraph.GraphPane;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
pane.CurveList.Clear ();
int itemscount = 5;
Random rnd = new Random ();
// Высоты столбиков
double[] YValues1 = new double[itemscount];
double[] YValues2 = new double[itemscount];
double[] YValues3 = new double[itemscount];
double[] XValues = new double[itemscount];
// Заполним данные
for (int i = 0; i < itemscount; i++)
{
XValues[i] = i + 1;
YValues1[i] = rnd.NextDouble ();
YValues2[i] = rnd.NextDouble ();
YValues3[i] = rnd.NextDouble ();
}
// Создадим три гистограммы
// Так как для всех гистограмм мы передаем одинаковые массивы координат по X,
// то столбики будут группироваться в кластеры в этих точках.
BarItem bar1 = pane.AddBar ("Values1", XValues, YValues1, Color.Blue);
BarItem bar2 = pane.AddBar ("Values2", XValues, YValues2, Color.Red);
BarItem bar3 = pane.AddBar ("Values3", XValues, YValues3, Color.Yellow);
// !!! Расстояния между столбиками в кластере (группами столбиков)
pane.BarSettings.MinBarGap = 0.0f;
// !!! Увеличим расстояние между кластерами в 2.5 раза
pane.BarSettings.MinClusterGap = 2.5f;
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
zedGraph.AxisChange ();
// Обновляем график
zedGraph.Invalidate ();
}
}
{
public Form1 ()
{
InitializeComponent ();
DrawGraph ();
}
private void DrawGraph ()
{
// Получим панель для рисования
GraphPane pane = zedGraph.GraphPane;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
pane.CurveList.Clear ();
int itemscount = 5;
Random rnd = new Random ();
// Высоты столбиков
double[] YValues1 = new double[itemscount];
double[] YValues2 = new double[itemscount];
double[] YValues3 = new double[itemscount];
double[] XValues = new double[itemscount];
// Заполним данные
for (int i = 0; i < itemscount; i++)
{
XValues[i] = i + 1;
YValues1[i] = rnd.NextDouble ();
YValues2[i] = rnd.NextDouble ();
YValues3[i] = rnd.NextDouble ();
}
// Создадим три гистограммы
// Так как для всех гистограмм мы передаем одинаковые массивы координат по X,
// то столбики будут группироваться в кластеры в этих точках.
BarItem bar1 = pane.AddBar ("Values1", XValues, YValues1, Color.Blue);
BarItem bar2 = pane.AddBar ("Values2", XValues, YValues2, Color.Red);
BarItem bar3 = pane.AddBar ("Values3", XValues, YValues3, Color.Yellow);
// !!! Расстояния между столбиками в кластере (группами столбиков)
pane.BarSettings.MinBarGap = 0.0f;
// !!! Увеличим расстояние между кластерами в 2.5 раза
pane.BarSettings.MinClusterGap = 2.5f;
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
zedGraph.AxisChange ();
// Обновляем график
zedGraph.Invalidate ();
}
}
Вернуться к остальным примерам
Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.