узлы гладкой кривой matplotlib

Мне нравится сохранять свои графики в векторном формате, например. пдф или свг. По умолчанию matplotlib сохраняет построенные кривые в виде точек, соединенных прямыми линиями. На языке SVG с помощью команды m <path>. Есть ли способ сохранить пути с помощью Кривые Безье? В SVG это будет использовать c команды. Я нашел много предложений по использованию кубической интерполяции, например. с scikit, чтобы кривая выглядела гладкой, увеличив количество точек. Это не то, чем я хочу заниматься. У меня достаточно очков в моих сюжетах. Я просто хочу, чтобы они выглядели идеально гладкими в программе просмотра векторной графики, что было бы в том случае, если бы пути были записаны с гладкими узлами, как показано на снимке экрана из Inkscape. Верхняя кривая имеет сглаженные узлы (я использовал кнопку «Сделать выбранные узлы автоматически сглаженными» в Inkscape), а нижняя — нет.

Если это невозможно напрямую с помощью matplotlib, есть ли программа, которая может сгладить все кривые в файле PDF или SVG?

Пример плавной кривой


person SU3    schedule 04.09.2020    source источник
comment
Пожалуйста, взгляните на этот ответ: stackoverflow.com/questions/62855310/   -  person enxaneta    schedule 04.09.2020
comment
Техническое примечание. В SVG есть четыре инструкции кривой Безье, q и c, для квадратичных и кубических кривых, причем t и s являются их непрерывными гладкими версиями, поэтому не нужно хотите c, вы почти наверняка хотите s. Самый простой способ — рассматривать многоугольные точки как координаты Катмулла-Рома, а затем преобразовывать каждый точечный сегмент в кубическую форму Безье, используя довольно тривиальную формулу преобразования, найденную в конце pomax.github.io/bezierinfo/#catmullconv   -  person Mike 'Pomax' Kamermans    schedule 05.09.2020
comment
Еще одно замечание по программированию: ваши графики не являются кривыми, это просто точки, поэтому один из стандартных подходов для людей, которым нужны кривые, — просто интерполировать их, используя что-то вроде функции интерполяции scipy, а затем делать все, что им нужно, с результирующими данными кривой.   -  person Mike 'Pomax' Kamermans    schedule 05.09.2020
comment
Таким образом, s, unline c гарантирует, что производные останутся непрерывными между соединенными сегментами кривой. Спасибо за чаевые! Но я не уверен, что вы имеете в виду, что ваши графики не являются кривыми. У нас могут быть разные определения слова curve. Насколько я понимаю, это кривые, определяемые координатами точек, возможно, производными по этим координатам и методом интерполяции (l для линейной, c для кубической, q для квадратичной и т. д.).   -  person SU3    schedule 07.09.2020
comment
О, и спасибо за ссылку! Это очень хорошее резюме. Я буду использовать его как ссылку, если решу написать свой собственный конвертер.   -  person SU3    schedule 07.09.2020