Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: jurtal от Сентябрь 25, 2009, 16:12



Название: График на QWTPlot c разрывами.
Отправлено: jurtal от Сентябрь 25, 2009, 16:12
Если кто знает, пожалуйста подскажите, как нарисовать кривую на QWTPlot с разрывами. В сети только нашел,что можно маскирующий массив как-то задавать...


Название: Re: График на QWTPlot c разрывами.
Отправлено: vfilatov от Январь 26, 2011, 15:26
Тоже заинтересовал этот вопрос...


Название: Re: График на QWTPlot c разрывами.
Отправлено: alexman от Январь 26, 2011, 16:24
Попробуй void QwtPlotCurve::setPen (const QPen & pen ), задав нужный pen.


Название: Re: График на QWTPlot c разрывами.
Отправлено: vfilatov от Январь 26, 2011, 16:33
Эээ, не понял, а какой - нужный? По-моему, Pen тут не причём.
Речь идёт о том, что для некоторых значений Х могут быть не известны соответствующие значения Y. Но в методе QwtPlotCurve::SetData невозможно это указать.


Название: Re: График на QWTPlot c разрывами.
Отправлено: Akon от Январь 26, 2011, 18:59
Да, тоже интересен вопрос по поводу разрывов. Работал с Qwt 5.2.0 - никаких маскирующих массивов там не обнаружил.

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

Как вариант - можно завести вторую курву, у которой будет цвет фона. Значения этой курвы в интервале разрыва совпадают со значениями исходной курвы, вне интервала разрыва она стелется по горизонтальной оси. Т.о. визуально видится разрыв.


Название: Re: График на QWTPlot c разрывами.
Отправлено: vfilatov от Январь 26, 2011, 19:09
Значит приходится констатировать, что стандартных средств нет.
А как тебя "устроило значение 0 для разрыва"? Всё равно ж курва рисоваться будет от точки (x1, y1)  в точку разрыва (x2, 0) и от неё в следующую точку (x3, y3).


Название: Re: График на QWTPlot c разрывами.
Отправлено: alexman от Январь 26, 2011, 21:54
Сорри за предыдущий пост! Не понял в чем дело сразу)
Так если хранить куски в разных QwtPlotCurve проблема решается?


Название: Re: График на QWTPlot c разрывами.
Отправлено: vfilatov от Январь 26, 2011, 23:33
Наверно решается. Но всё надо делать ручками, делить их, следить, чтобы на легенде лишние не появлялись, движения мыши над этими отдельными курвами правильно обрабатывать и т. д.


Название: Re: График на QWTPlot c разрывами.
Отправлено: Akon от Январь 27, 2011, 00:06
А как тебя "устроило значение 0 для разрыва"? Всё равно ж курва рисоваться будет от точки (x1, y1)  в точку разрыва (x2, 0) и от неё в следующую точку (x3, y3).

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

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

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

Данный вариант - откровенный костыль, подходящий для простых случаев. Некоторые проблемы уже обозначены в посте выше. Грамотное решение - определять интервал разрыва в данных и патчить отрисовку.