Последние изменения - Поиск:
RSS блога RSS блога

Начало

Блог

Программки

    Google+

Плагины

Программирование

Фото

Контакты

Я в твиттере Я в ЖЖ

Шпаргалка по ZedGraph. Гистограммы и текстовые оси

Все примеры объединены в одном 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 ();
}

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

Пожалуйста, оцените материал

5 stars Рейтинг 4.9/5. Всего 14 голос(а, ов)



Ффф 12.12.2009 - 01:06

А как поменять ширину столбцов гистограммы?

Jenyay 12.12.2009 - 09:10

Ффф, как раз про изменение ширины столбцов я планировал сделать следующий пример. А так можете посмотреть здесь описание настроек Bar'а, особенно обратите внимание на свойство ClusterScaleWidth.

Ффф 14.12.2009 - 01:34

Спасибо. Вообще примеры хорошие. Просто и понятно описано. Так держать.

Jenyay 14.12.2009 - 08:50

Спасибо, очень приятно. :)

Ффф 14.01.2010 - 20:06

Таки можно мануал по ширине столбцов гистограммы? :)

Jenyay 14.01.2010 - 20:58

Ффф, вот недавно выложил - BarWidth и BarClusters. Проще менять не ширину столбцов, а отступы между ними.

Ффф 15.01.2010 - 01:20

Ура. Спасибо

Anoha 25.06.2010 - 08:10

Столкнулся с проблемой раскраски гистограммы. необходимо раскрасить столбики в этом графике http://s003.radikal.ru/i203/1006/d2/8b2f347a7bab.png
этот график строил как в примере, также пробовал в цикле добавлять по одному бару. получается что все они строятся в первом кластере. вот так http://i055.radikal.ru/1006/1b/64243499b8f2.png
Можно ли как- нибудь привязаться к текстовым меткам по Х?

Jenyay 03.07.2010 - 17:29

Anoha, я правильно понял, что нужно независимо раскрашивать отдельные столбики, при этом на каждое значение по оси X будет только один столбик?

Если так, то можно разделить все столбики по отдельным графикам так, чтобы каждый график рисовался бы одним цветом. То есть сначала нарисовать все синие столбики, потом все красные и т.д.

Anoha 06.07.2010 - 06:34

это график ошибок. если на заданном объекте были критические ошибки, то бар рисуется красным, если предупреждения, то желтым, если мелкие замечания, то синим. Данные для всего этого безобразия хранятся в датасете. Как можно сделать, чтобы значения по Х соответствовали своим барам

Anoha 06.07.2010 - 06:38

сейчас я вывожу каждый бар как отдельный график, соответсвенно зедграф складывает все бары в первый кластер. если выводить 3 графика для каждого цвета, то будет по 3 столбца в кластере. Пробовал каждому бару присваивать значения, болееменее получилось, но когда ставишь текстовые метки все равно все строятся в первом кластере.

 27.08.2010 - 07:24

happy smiley Спасибо! То что нужно!!!

Анастасия 21.09.2010 - 23:25

Спасибо, помогли!winking smiley

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();

Подписаться на комментарии
Автор:
Тема:
 Ваш комментарий
 
 
Введите код 809
 
Править - История - Печать - Последние изменения - Поиск
Последняя редакция от 14.12.2011 05:50
Oriental logistic - недорогая доставка грузов из китая в РФ