Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ wxWidgets _ Создание графиков в wxWidgets.

Автор: MoskvichevAV 10.12.2009, 10:55

wxFreeChart - мощная библиотека, для рисования графиков для wxWidgets.
Поддерживаемые виды графиков:
- линейные/точечные графики, основанные на xy координатах
- столбчатые графики
- свечные и баровые графики биржевых котировок
- Gantt графики

http://wxcode.sourceforge.net/components/freechart/

Автор: ViGOur 10.12.2009, 12:43

Если это твоя библиотека и ты хочешь ею поделиться, то можешь создать о ней тему в соответствующем разделе сайта: http://crossplatform.ru
Для этого достаточно быть зарегистрированным и залогиненым на форуме. ;)

Автор: MoskvichevAV 10.12.2009, 19:56

Цитата(ViGOur @ 10.12.2009, 14:43) *
Если это твоя библиотека и ты хочешь ею поделиться, то можешь создать о ней тему в соответствующем разделе сайта: http://crossplatform.ru
Для этого достаточно быть зарегистрированным и залогиненым на форуме. ;)

Спасибо за подсказку. :)

Автор: Alatar 11.12.2009, 21:01

Преимущества по сравнению с другими библиотеками построения графиков?

Автор: MoskvichevAV 15.12.2009, 9:31

Цитата(Alatar @ 11.12.2009, 23:01) *
Преимущества по сравнению с другими библиотеками построения графиков?

Большая гибкость и большое количество видов поддерживаемых графиков,
с возможностью создания различных конфигураций графиков.
Для wxWidgets существует ещё wxChart, но в отличии от wxFreeChart,
поддерживает только круговые и столбчатые графики.

Автор: Alatar 16.12.2009, 8:54

Прошу прощения, а Вы, случаем, не путаете графики и диаграммы? Во всяком случае, wxChart предназначен для создания диаграмм, а для создания графиков есть wxPlPlot, wxMathPlot, wxPlotCtrl, wxPlotWindow и ещё парочка.

Автор: Alatar 16.12.2009, 8:57

Ой, что-то я сам путаю - не диаграмм, конечно, а гистограмм. =)

Автор: MoskvichevAV 16.12.2009, 9:50

Цитата(Гость_Alatar_* @ 16.12.2009, 10:54) *
Прошу прощения, а Вы, случаем, не путаете графики и диаграммы? Во всяком случае, wxChart предназначен для создания диаграмм, а для создания графиков есть wxPlPlot, wxMathPlot, wxPlotCtrl, wxPlotWindow и ещё парочка.

wxFreeChart может создавать и графики и диаграммы. Сейчас пока круговые диаграммы (т.н. PieCharts) не реализованы, но будут в скором времени.

wxPlPlot является привязкой PLPlot к wxWidgets, и кроме того требует ещё дополнительных библиотек. wxFreeChart полностью базируется на wxWidgets.

wxPlotWindow может рисовать только кривые, в достаточно упрощённой форме.

Автор: Alatar 17.12.2009, 0:26

Ну с этими двумя всё ясно. PlPlot тяжеловат для того, что бы просто нарисовать график простейший график. Да и, честно говоря, у меня сложилось такое ощущение, что не предназначен он для этого. wxPlotWindow очень уж примитивен. Я их упомянул скорее для примера.
Собственно, интереснее остальные две. wxMathPlot мне импонирует отношением простоты к функциональности. Он весь умещается в одном .cpp и, соответственно, одном заголовке, но при этом вполне адекватно рисует двумерные графики и различные вспомогательные слои. wxPlotCtrl значительно сложнее структурно (десятки файлов с исходниками), зато и умеет уже больше. Кроме того, у него очень удобный интерфейс - встроенное управление с клавиатуры, крестик и тд. Однако все они заточены по статику. Что бы нарисовать динамический график надо изрядно помучиться. Как с этим дела в wxFreeChart?

Автор: MoskvichevAV 17.12.2009, 6:32

Цитата(Гость_Alatar_* @ 17.12.2009, 2:26) *
Однако все они заточены по статику. Что бы нарисовать динамический график надо изрядно помучиться. Как с этим дела в wxFreeChart?

wxFreeChart поддерживает динамические графики. Эта функция изначально заложена.
wxFreeChart изначально поддерживает автоматическое обновление графика, при изменении/добавлении
данных.
К тому же, сейчас идёт работа над оптимизацией прорисовки графиков больших объёмов, из данных в реальном времени.

Автор: Alatar 20.12.2009, 8:27

Хм, Вы меня заинтересовали, будет свободное время - попробую. А как, всё-таки, там дела с интерфейсом? Чисто координатная сетка, или какие-то встроенные функции есть? Ну там, напрмер, прокрутка/масштабирование, скрытие/отображение точек и тд.

Автор: MoskvichevAV 20.12.2009, 17:14

Цитата(Гость_Alatar_* @ 20.12.2009, 10:27) *
Хм, Вы меня заинтересовали, будет свободное время - попробую. А как, всё-таки, там дела с интерфейсом? Чисто координатная сетка, или какие-то встроенные функции есть? Ну там, напрмер, прокрутка/масштабирование, скрытие/отображение точек и тд.

Насчёт функций - есть полиномная функция и синус. Вообще, их очень несложно написать, если они Вам нужны.
Прокрутка-масштабирование - в планах, будет в след. релизах.
А про скрытие-отображение точек, можно поподробнее, что это из себя представляет?

Автор: Alatar 20.12.2009, 22:00

Гы =) Конечно, я не про математические функции смысла вбивать их в библиотеку нет - главное сделать различие между заданием функции формулой и таблицей (как в wxPlotCtrl, напрмер). Можно, кстати, ещё и в параметрической форме задание сделать =).
Но речь не об этом, а о встроенных функциях интерфейса, типа автомасштаба, прокрутки/масштабирования мышкой и с клавы, а так же функции для управления легендой, метками, сеткой, осями и прочей лабудой.
Про точки - речь о режиме построения графика по таблице. В этом случае график строится по точкам, которые обычно соединяются линиями. Так вот, эти точки можно рисовать, а можно - нет. В первом случае удобно смотреть координаты конкретных точек (особенно в совокупности с перекрестием на курсоре), а во втором сам график смотрится чётче при большом количестве точек.

Кстати, небольшой оффтопик: когда я учился в универе, мне очень нравилась замечательная программка Advanced Grapher. Советую посмотреть её функционал в плане идей для дальнейшего роста контрола =)

Автор: MoskvichevAV 21.12.2009, 8:28

Цитата(Гость_Alatar_* @ 21.12.2009, 0:00) *
Гы =) Конечно, я не про математические функции смысла вбивать их в библиотеку нет - главное сделать различие между заданием функции формулой и таблицей (как в wxPlotCtrl, напрмер). Можно, кстати, ещё и в параметрической форме задание сделать =).
Но речь не об этом, а о встроенных функциях интерфейса, типа автомасштаба, прокрутки/масштабирования мышкой и с клавы, а так же функции для управления легендой, метками, сеткой, осями и прочей лабудой.

То есть, мы друг друга неправильно поняли. Функционал, правильнее сказать. :)

Автомаштаб. В wxFreeChart, по умолчанию, отрисовываются все данные графика. То есть график растягивается/уменьшается, чтобы полностью уместиться на экране. Это поведение по умолчанию. Также можно вручную ограничить видимый диапазон. Есть так называемые окна, то есть видимая часть графика. С помощью окон, можно прокручивать график.
Прокрутка осуществляется скроллбарами.

Легендой, метками, сеткой, осями можно полностью управлять.
Осей можно вообще сколько угодно и как угодно добавить.
Можете посмотреть демо к wxFreeChart на этот счёт.

Цитата(Гость_Alatar_* @ 21.12.2009, 0:00) *
Про точки - речь о режиме построения графика по таблице. В этом случае график строится по точкам, которые обычно соединяются линиями. Так вот, эти точки можно рисовать, а можно - нет. В первом случае удобно смотреть координаты конкретных точек (особенно в совокупности с перекрестием на курсоре), а во втором сам график смотрится чётче при большом количестве точек.

Это тоже есть.
Перекрестия курсора пока нет, появится в одном из след релизов.

Цитата(Гость_Alatar_* @ 21.12.2009, 0:00) *
Кстати, небольшой оффтопик: когда я учился в универе, мне очень нравилась замечательная программка Advanced Grapher. Советую посмотреть её функционал в плане идей для дальнейшего роста контрола =)

Спасибо, посмотрю обязательно. :)

Автор: p2012enza 13.2.2013, 16:24

здравствуйте
хотел использовать wxFreeChart в своем проекте
WXUSINGDLL определил
Сервис-Параметры-Каталоги VC++ подключил библиотеки и заголовочные файлы wxFreeChart и wxWidgets
появляется ошибка

ohlcdemos.obj : error LNK2019: ссылка на неразрешенный внешний символ

"__declspec(dllimport) public: __thiscall XYLineRenderer::XYLineRenderer(bool,bool,int,int)

в функции "public: virtual class Chart * __thiscall OHLCDemo4::Create(void)"

подскажите что можно сделать

Автор: Iron Bug 13.2.2013, 17:34

либо какая-то библиотека не прилинкована, либо порядок линковки указан неверный.

ну, либо объявления функции в библиотеке и в сорце не совпадают.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)