Все примеры объединены в одном solution для Visual Studio 2005 и написаны на языке C#, скачать их можно отсюда (1.7 МБ).
Проект в примере - BarSimple
private void DrawGraph ()
{
// Получим панель для рисования
GraphPane pane = zedGraph.GraphPane;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
pane.CurveList.Clear ();
int itemscount = 5;
Random rnd = new Random ();
// Подписи под столбиками
string[] names = new string[itemscount];
// Высота столбиков
double[] values = new double[itemscount];
// Заполним данные
for (int i = 0; i < itemscount; i++)
{
names[i] = string.Format ("Текст {0}", i);
values[i] = rnd.NextDouble ();
}
// Создадим кривую-гистограмму
// Первый параметр - название кривой для легенды
// Второй параметр - значения для оси X, т.к. у нас по этой оси будет идти текст, а функция ожидает тип параметра double[], то пока передаем null
// Третий параметр - значения для оси Y
// Четвертый параметр - цвет
BarItem curve = pane.AddBar ("Гистограмма", null, values, Color.Blue);
// Настроим ось X так, чтобы она отображала текстовые данные
pane.XAxis.Type = AxisType.Text;
// Уставим для оси наши подписи
pane.XAxis.Scale.TextLabels = names;
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
zedGraph.AxisChange ();
// Обновляем график
zedGraph.Invalidate ();
}
Вернуться к остальным примерам
Пожалуйста, оцените материал
Рейтинг 4.9/5. Всего 14 голос(а, ов)
А как поменять ширину столбцов гистограммы?
Jenyay 12.12.2009 - 09:10
Ффф, как раз про изменение ширины столбцов я планировал сделать следующий пример. А так можете посмотреть здесь описание настроек Bar'а, особенно обратите внимание на свойство ClusterScaleWidth.
Спасибо. Вообще примеры хорошие. Просто и понятно описано. Так держать.
Jenyay 14.12.2009 - 08:50
Спасибо, очень приятно. :)
Таки можно мануал по ширине столбцов гистограммы? :)
Jenyay 14.01.2010 - 20:58
Ффф, вот недавно выложил - BarWidth и BarClusters. Проще менять не ширину столбцов, а отступы между ними.
Jenyay 03.07.2010 - 17:29
Anoha, я правильно понял, что нужно независимо раскрашивать отдельные столбики, при этом на каждое значение по оси X будет только один столбик?
Если так, то можно разделить все столбики по отдельным графикам так, чтобы каждый график рисовался бы одним цветом. То есть сначала нарисовать все синие столбики, потом все красные и т.д.
это график ошибок. если на заданном объекте были критические ошибки, то бар рисуется красным, если предупреждения, то желтым, если мелкие замечания, то синим. Данные для всего этого безобразия хранятся в датасете. Как можно сделать, чтобы значения по Х соответствовали своим барам
сейчас я вывожу каждый бар как отдельный график, соответсвенно зедграф складывает все бары в первый кластер. если выводить 3 графика для каждого цвета, то будет по 3 столбца в кластере. Пробовал каждому бару присваивать значения, болееменее получилось, но когда ставишь текстовые метки все равно все строятся в первом кластере.
Спасибо! То что нужно!!!
Анастасия 21.09.2010 - 23:25
Спасибо, помогли!
skyman 08.05.2011 - 17:15
StockPointList spl = new StockPointList();
for (int i = 0; i < 100; i++)
{
StockPt pt = new StockPt( DateTime.Now.AddHours( i ).ToOADate() , 1.45 + i / 100 , 1.15 + i / 100 , 1.25 + i / 100 , 1.35 + i / 100 , 2 * i);
spl.Add( pt );
}
JapaneseCandleStickItem myCurve = MyPane.AddJapaneseCandleStick( Bar.BarsByCurrencyPars [ i ].CurrencyPars.ToString() , spl );
myCurve.Stick.IsAutoSize = true;
myCurve.Stick.Color = Color.Blue;
myCurve.Stick.FallingBorder.Color = Color.Blue;
myCurve.Stick.FallingFill.Color = Color.White;
myCurve.Stick.RisingBorder.Color = Color.Blue;
myCurve.Stick.RisingFill.Color = Color.Blue;
MyPane.XAxis.Type = AxisType.DateAsOrdinal;
// pretty it up a little
MyPane.Chart.Fill = new Fill( Color.White , Color.LightGoldenrodYellow , 45.0f );
MyPane.Fill = new Fill( Color.White , Color.FromArgb( 220 , 220 , 255 ) , 45.0f );
zedGraphControl2.AxisChange();
zedGraphControl2.Invalidate();
Вот пример для работы с японскими свечами-начало такое же как у всех
, код не мой где- то нашел в инете
skyman 08.05.2011 - 17:17
Прошу прощения ошибочка вышла:
StockPointList spl = new StockPointList();
for (int i = 0; i < 100; i++)
{
StockPt pt = new StockPt( DateTime.Now.AddHours( i ).ToOADate() , 1.45 + i / 100 , 1.15 + i / 100 , 1.25 + i / 100 , 1.35 + i / 100 , 2 * i);
spl.Add( pt );
}
JapaneseCandleStickItem myCurve = MyPane.AddJapaneseCandleStick( "EURUSD" , spl );
myCurve.Stick.IsAutoSize = true;
myCurve.Stick.Color = Color.Blue;
myCurve.Stick.FallingBorder.Color = Color.Blue;
myCurve.Stick.FallingFill.Color = Color.White;
myCurve.Stick.RisingBorder.Color = Color.Blue;
myCurve.Stick.RisingFill.Color = Color.Blue;
MyPane.XAxis.Type = AxisType.DateAsOrdinal;
// pretty it up a little
MyPane.Chart.Fill = new Fill( Color.White , Color.LightGoldenrodYellow , 45.0f );
MyPane.Fill = new Fill( Color.White , Color.FromArgb( 220 , 220 , 255 ) , 45.0f );
zedGraphControl2.AxisChange();
zedGraphControl2.Invalidate();