Как подключить библиотеку ZedGraph
Наверное глупый вопрос, но я новенькая в сфере программирования и никак не могу разобраться, мне надо начертить график, как я поняла мне не обходима для этого библиотека ZedGraph, я ее подключаю обычным способом
using ZedGraph;
(это си#), но мне выдается такая ошибка
Error 1 The type or namespace name ‘ZedGraph’ could not be found (are you missing a using directive or an assembly reference?) c:\users\лена\documents\visual studio 2010\Projects\WindowsFormsApplication_1\WindowsFormsApplication_1\Form1.cs 10
я так понимаю, что не находит эту самую библиотеку, вычитала что ее нужно скачать, скачала, а как ее установить? подскажите пожалуйста. Очень тяжело мне все это дается =(
Как добавить zedgraph в visual studio
3) Создание списка точек (Х, У) для построения кривой:
PointPairList list = new PointPairList ();
4) Заполнение списка точек (Х, У) для построения кривой, например на диапазоне [-50; 50]:
double xmin = -50;
double xmax = 50;
for (double x = xmin; x
//У кривой линия будет невидимой
//Цвет заполнения отметок (ромбиков) – голубой
14) Обновление графика
15) Удаление легенды:
16) Вставка заголовка диаграммы:
17) Удаление горизонтальной линии по уровню y = 0 на графике
18) Построение графика по вертикали
//Линия по нулевому уровню должна быть перпендикулярна оси X
//Поменяем названия осей, чтобы еще больше запутать противника
19) Построение на графике линий, стрелок и размещение текста
//Линию рисуем после обновления осей с помощью AxisChange (), так как мы будем использовать значения. Нарисуем горизонтальную пунктирную линию от левого края до правого на уровне y = 0.5
double level = 0.5;
LineObj line = new LineObj (pane.XAxis.Scale.Min, level,
//Стиль линии – пунктирная
//Добавим линию в список отображаемых объектов
//Нарисуем стрелку, указывающую на максимум функции
Координаты точки, куда указывает стрелка
Координаты привязаны к осям
double xend = 0.0;
double yend = f(0);
//Координаты точки начала стрелки
double xstart = xend + 5.0;
double ystart = yend + 0.1;
//Рисование стрелки с текстом
ArrowObj arrow = new ArrowObj (xstart, ystart, xend, yend);
//Добавим стрелку в список отображаемых объектов
//Напишем текст около начала стрелки
Координаты привязаны к осям
TextObj text = new TextObj («Max», xstart, ystart);
//Отключим рамку вокруг текста
//Изменим цвет текста
//Добавим текст в список отображаемых объектов
20) Отображение сетки и изменение ее внешнего вида
//Включаем отображение сетки напротив крупных рисок по оси X
//Задаем вид пунктирной линии для крупных рисок по оси X:
//Длина штрихов равна 10 пикселям, .
//затем 5 пикселей – пропуск
//Включаем отображение сетки напротив мелких рисок по оси X
21) Построение гистограммы и текстовых осей
int itemscount = 5;
//Подписи под столбиками
string[] names = new string[itemscount];
double[] values = new double[itemscount];
For my project, I need to add and update real-time data to my dual y-axis graph. The Y and Y2 values share the same X value, and I created it already. Now I have a function that adds the new point pairs to the curve lists.
Here is my problem: My Y and Y2 values are always added to the curve list of the first curve. How can I get the Y2 value added to the second curve list in my graph?
Here is my function code:
How can he Y2 values be added to the 2nd curve list?
2 ответа
Found a possible solution myself. Here are my code changes:
The important thing is to use the index in the «CurveList[i]». So [0] is my curve with the Y values and [1] is my curve with the Y2 values, and so on.
I hope this helps anybody who has the same or similar problem.
For my project, I need to add and update real-time data to my dual y-axis graph. The Y and Y2 values share the same X value, and I created it already. Now I have a function that adds the new point pairs to the curve lists.
Here is my problem: My Y and Y2 values are always added to the curve list of the first curve. How can I get the Y2 value added to the second curve list in my graph?
Here is my function code:
How can he Y2 values be added to the 2nd curve list?
2 ответа
Found a possible solution myself. Here are my code changes:
The important thing is to use the index in the «CurveList[i]». So [0] is my curve with the Y values and [1] is my curve with the Y2 values, and so on.
Я знаю, как установить семейство и размер шрифтов для основных xaxis и yaxis. Но я пробовал много способов сделать с другими осями y, когда индекс yaxis y2 и y7. Как показано на рисунке, DD-Price представляет собой ось y с yaxisindex = y2, а PD-Price — ось y с yaxisindex = y7. Вот мой код: .
У меня есть приложение WPF, которое я использовал около года назад. Внезапно при запуске из VS2015 стал занимать много времени (около 5 минут). Я проверил диспетчер задач и обнаружил, что экземпляр приложения при запуске забирает из памяти 8 500 МБ , а позже уменьшился до 3900 МБ . Я создал пап.
Элемент управления Windows Forms ZedGraph в приложении WPF. Точки данных генерируются автоматически и прикрепляются к диаграмме каждые N секунд. Когда на диаграмму добавляется новая точка данных, я сдвигаю (панорамирую) диаграмму на одну точку влево, поэтому в окне просмотра всегда отображается не.
У меня есть несколько PointPairLists, и я хочу добавить их в список; но я сталкиваюсь с индексом исключения вне допустимого диапазона для: AllPhiLines [0] .Add (Quartz [0]); Я пробовал код ниже: PointPairList Quartz = new PointPairList(7000); PointPairList Calcite = new PointPairLis.
У меня есть словарь с парами ключей и значений. Мне нужно создать линейный график на zedGraph, нанеся ключ по оси X и значение по оси Y. Я использую Visual Studio 2017. Ключ — это тип DateTime. Значение — это строковый тип. Я думал о создании 2 массивов, массива X-Axis и массива Y-Axis. Любые дру.
Я искал и не могу найти ответ на этот вопрос. Я мог бы написать код самому сделать это, но я не хочу изобретать колесо. 🙂 Поскольку Zedgraph использует iPointList и его индексатор для внутреннего доступа к данным, вы можете назначить любую структуру данных и динамически изменять данные, которые Zed.
У меня есть график, на котором на панели графика есть текст, который будет отображаться на разных языках. При использовании других языков, кроме английского, выравнивание текста некорректно. Любой способ уменьшить размер шрифта. Что у меня есть myCurve = myPane.AddBar(«My Curve»), list, Color.Blue).
Доброго времени суток. Необходимо нарисовать график циклоид, радиус задается пользователем. Покрасить удалось только половину срока, не понимаю, что это такое. Код применяю. Моя функция: return r * Math.Acos((r — y) / r) — Math.Sqrt(2 * r * y — Math.Pow(y, 2)); И моя основная часть: GraphPane pa.
Как я могу очистить график Зедграфа? z1.GraphPane.CurveList.Clear(); Команда только очистите одну кривую. Я хочу очистить весь график и заменить новую линию диаграммы.
Я хотел бы заполнить панель Zedgraph несколькими графиками из списка с несколькими кривыми. В настоящее время мой метод заполняет эти кривые, но все они имеют одинаковый цвет и тип символа. Есть ли предложения по присвоению каждой добавленной кривой другого цвета? public void btnMakePlt_Click(obje.
Я работаю над приложением формы Windows с zedgraph и datagridview. В datagridview есть строка для каждой точки линейного графика, и когда пользователь нажимает на точку на графике, я хочу, чтобы она выделяла эквивалентную строку в datagridview. Итак, как я могу узнать, какую точку щелкнул пользоват.
Я хочу, чтобы пользователь мог щелкнуть и перетащить график, чтобы выбрать точки в этой области. Я подумал, что хороший способ сделать это — использовать ZoomEvent, потому что параметр newState дает область масштабирования, и я могу просто выбирать точки в этой области. Есть ли способ получить дост.
Мне просто интересно, знает ли кто-нибудь, как изменить LineStyle Major и Minor сетки для ZedGraph? Например у меня есть: graphPane.XAxis.MinorGrid.IsVisible = true; Я хочу что-то в этом роде: graphPane.XAxis.MinorGrid.LineStyle => solid line. Сегодня я провел много исследований, но не смог найти .
Я пытаюсь отобразить некоторые данные с помощью ZedGraph. Данные были считаны из файла, который затем сохраняется в массиве с именем heart_rate [x], который я пытаюсь передать в список пар точек, однако массив строк не примет. После поиска я предполагаю, что сначала его нужно преобразовать в doubl.
Я настраиваю меню правой кнопки мыши благодаря этому: lineGraphControl1.ContextMenuBuilder += new ZedGraphControl.ContextMenuBuilderEventHandler(MyContextMenuBuilder); А также private void MyContextMenuBuilder(ZedGraphControl control, ContextMenuStrip menuStrip, Point mousePt, ZedGraphControl.Conte.
Я создал PointValueHandler и добавил событие, используя: this.zg1.PointValueEvent += new ZedGraph.ZedGraphControl.PointValueHandler(this.myPointValueHandler2); Однако myPointValueHandler2 никогда не вызывается. У меня есть аналогичное событие для MouseDoubleClick, которое прекрасно вызывается. Един.
У меня есть файл .wav, и я рисую форму волны с помощью ZedGraph. Я вычисляю энергии файла .wav для каждой секунды, и если энергия меньше 4, я хочу нарисовать образец другим цветом. Я создал два PointPairLlist и LineItem для этого, но при объединении этих двух списков возникла проблема. Вот мой ко.
У меня есть код, который позволяет пользователю выбирать файлы и назначать данные в массив. private void Load_data_Click(object sender, EventArgs e)
Читайте также:
- Программа для программирования logo soft comfort v8
- Тип расходов в 1с комплексная автоматизация
- Прошивка коммутатора через putty
- Как настроить вставку автоназвания в ворде
- Чем открыть журнал регистрации 1с lgd
Шпаргалка по ZedGraph
ZedGraph — это очень удобный компонент для рисования графиков под .NET Framework, но, к сожалению, документация к этому контролу довольно скудная. Поэтому здесь я решил сделать что-то вроде шпаргалки или, если угодно, HOWTO по компоненту ZedGraph.
То, что находится дальше на этой странице — это не справка, а просто небольшие примеры, показывающие как использовать какую-нибудь одну из возможностей контрола. Все основные пояснения по использованию той или иной возможности будут написаны в виде комментариев к коду.
Структура всех примеров одинаковая — главное окно, внутри которого располагается экземпляр класса ZedGraphControl. Имя экземпляра класса — zedGraph. В конструкторе окна вызывается метод DrawGraph(), внутри которого и происходит заполнение компонента данными. Поэтому в примерах ниже будут приводиться только функции DrawGraph() и дополнительные функции, которые будут зависеть от примера.
Все примеры объединены в одном solution для Visual Studio 2005 и написаны на языке C#, скачать их можно отсюда.
Эта шпаргалка со временем будет пополняться новыми примерами.
Шпаргалка по 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 ( «Текст » , 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 ( ) ;
}
Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
Рейтинг 4.3 / 5 . Всего 23 голос(а, ов)
Ффф 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 столбца в кластере. Пробовал каждому бару присваивать значения, болееменее получилось, но когда ставишь текстовые метки все равно все строятся в первом кластере.
Спасибо! То что нужно.
Анастасия 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();
Иван 01.12.2015 — 19:34
Обе оси текстовые
Помогите пожалуйста разобраться в следующей проблеме.
У меня есть гистограмма, столбики рисуются — все нормально.
Выглядит это так:
http://www.picshare.ru/view/6922550/
но есть одно НО!
Меня не устраивает координатная сетка по оси Y
Дело в том, что значения которые я присваиваю для отрисовки столбиков это есть некие «категории».
например: в этом месяце должник был в категории 30, а в следующем в категории 90
То есть ось Y представляет собой набор этих самых категорий
Я пытаюсь установить для оси Y так же как и для оси X свойство «текстовая ось». Тип устанавливается но при этом столбики перестают отрисовываться.
Получаем вот такую картину
http://www.picshare.ru/view/6922551/
А мне надо, что бы при значении 30 рисовался столбик по оси Y до отметки 30 и т.д.
Вот код с которым я пытаюсь это сделать:
// Подписи под столбиками string[] namesX = new string[3]; string[] namesY = new string[4]; // Высота столбиков double[] valuesX = new double[3]; double[] valuesY = new double[4]; namesX[0] = "first"; namesX[1] = "second"; namesX[2] = "third"; valuesX[0] = 30; valuesX[1] = 90; valuesX[2] = 30; namesY[0] = "30"; namesY[1] = "90"; namesY[2] = "180"; namesY[3] = "365"; valuesY[0] = 30; valuesY[1] = 90; valuesY[2] = 180; valuesY[3] = 365; // Создадим кривую-гистограмму // Первый параметр - название кривой для легенды // Второй параметр - значения для оси X, т.к. у нас по этой оси будет идти текст, а функция ожидает тип параметра double[], то пока передаем null // Третий параметр - значения для оси Y // Четвертый параметр - цвет //BarItem curve = pane.AddBar("Изменение категории задолженности", null, valuesX, Color.Blue); BarItem curve = pane.AddBar("Изменение категории задолженности", null, valuesX, Color.Blue); curve.Bar.Fill.Type = FillType.Solid; // Настроим ось X так, чтобы она отображала текстовые данные pane.YAxis.Type = AxisType.Text; pane.YAxis.Scale.TextLabels = namesY; // Уставим для оси наши подписи pane.XAxis.Type = AxisType.Text; pane.XAxis.Scale.TextLabels = namesX;