Russian Qt Forum
Октябрь 01, 2024, 14:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: График на QWTPlot c разрывами.  (Прочитано 5685 раз)
jurtal
Гость
« : Сентябрь 25, 2009, 16:12 »

Если кто знает, пожалуйста подскажите, как нарисовать кривую на QWTPlot с разрывами. В сети только нашел,что можно маскирующий массив как-то задавать...
Записан
vfilatov
Гость
« Ответ #1 : Январь 26, 2011, 15:26 »

Тоже заинтересовал этот вопрос...
Записан
alexman
Гость
« Ответ #2 : Январь 26, 2011, 16:24 »

Попробуй void QwtPlotCurve::setPen (const QPen & pen ), задав нужный pen.
Записан
vfilatov
Гость
« Ответ #3 : Январь 26, 2011, 16:33 »

Эээ, не понял, а какой - нужный? По-моему, Pen тут не причём.
Речь идёт о том, что для некоторых значений Х могут быть не известны соответствующие значения Y. Но в методе QwtPlotCurve::SetData невозможно это указать.
Записан
Akon
Гость
« Ответ #4 : Январь 26, 2011, 18:59 »

Да, тоже интересен вопрос по поводу разрывов. Работал с Qwt 5.2.0 - никаких маскирующих массивов там не обнаружил.

Пришел к выводу, что для точек разрыва нужно использовать спец. значение, напр. Nan, и патчить отрисовку, но не делал этого (устроило значение 0 для разрыва).

Как вариант - можно завести вторую курву, у которой будет цвет фона. Значения этой курвы в интервале разрыва совпадают со значениями исходной курвы, вне интервала разрыва она стелется по горизонтальной оси. Т.о. визуально видится разрыв.
Записан
vfilatov
Гость
« Ответ #5 : Январь 26, 2011, 19:09 »

Значит приходится констатировать, что стандартных средств нет.
А как тебя "устроило значение 0 для разрыва"? Всё равно ж курва рисоваться будет от точки (x1, y1)  в точку разрыва (x2, 0) и от неё в следующую точку (x3, y3).
Записан
alexman
Гость
« Ответ #6 : Январь 26, 2011, 21:54 »

Сорри за предыдущий пост! Не понял в чем дело сразу)
Так если хранить куски в разных QwtPlotCurve проблема решается?
Записан
vfilatov
Гость
« Ответ #7 : Январь 26, 2011, 23:33 »

Наверно решается. Но всё надо делать ручками, делить их, следить, чтобы на легенде лишние не появлялись, движения мыши над этими отдельными курвами правильно обрабатывать и т. д.
Записан
Akon
Гость
« Ответ #8 : Январь 27, 2011, 00:06 »

А как тебя "устроило значение 0 для разрыва"? Всё равно ж курва рисоваться будет от точки (x1, y1)  в точку разрыва (x2, 0) и от неё в следующую точку (x3, y3).

Совершенно верно. Просто у меня разрывными были всякие там прямоугольные импульсы и для них я ставил стиль линии - вертикальное соединение. В нуле у меня был проложен маркер или индикатор (не помню как называетя, вообщем это линия, которая рисовалась поверх всех курв). В итоге, смотрелось все нормально.

Так если хранить куски в разных QwtPlotCurve проблема решается?

Возможно, могут быть проблемы с курвами, которые рисуются методом интерполяции (последовательные точки соединяются кривой, которая проходит еще и через соседние точки).

Данный вариант - откровенный костыль, подходящий для простых случаев. Некоторые проблемы уже обозначены в посте выше. Грамотное решение - определять интервал разрыва в данных и патчить отрисовку.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.179 секунд. Запросов: 20.