Проблема заключается в том, что SplineSeries
создает, ну, в общем, сплайн (кусочно-полиномы) для интерполяции ваших точек.QtCharts не предоставляет никакого контроля над параметрами сплайна, такими как степень, контрольные точки и т. Д. Все они автоматически вычисляются из набора данных.
Вам следует позаботиться о природе сплайна: они будут проходят через точки данных, но остальные точки будут аппроксимированы скрытой полиномиальной функцией, поэтому создается неожиданных точек .Чтобы создать кусочную кривую, должны быть выполнены некоторые ограничения, такие как C ^ 0, C ^ 1 и C ^ 2 непрерывность (в предположении кубического сплайна).Чтобы соответствовать им в вашем случае, кривая должна loop .
QtCharts не предоставляет слишком много опций построения XY, в основном ScatterSeries
(отображает отдельные точки), LineSeries
(линейныйинтерполяция, без параметров сглаживания) и SplineSeries
(сглаживание, интерполяция по сплайну).
Чтобы использовать другую, просто замените noe SplineSeries
на LineSeries
.Вот вам пример того, как они выглядят с вашими данными:
В качестве промежуточного решения вы можете предварительно обработать данные, используя некоторые другиеметод интерполяции, который лучше адаптируется к вашим требованиям (например, составные кривые Безье ), а затем оценивает кривую в большем количестве точек, чтобы создать более гладкие данные, более удобные с SplineSeries
или, если он выглядит достаточно хорошодля вас, это может быть визуализировано напрямую, используя LinesSeries
.