Мне нравится сохранять свои графики в векторном формате, например. пдф или свг. По умолчанию matplotlib сохраняет построенные кривые в виде точек, соединенных прямыми линиями. На языке SVG с помощью команды m
<path>
. Есть ли способ сохранить пути с помощью Кривые Безье? В SVG это будет использовать c
команды. Я нашел много предложений по использованию кубической интерполяции, например. с scikit, чтобы кривая выглядела гладкой, увеличив количество точек. Это не то, чем я хочу заниматься. У меня достаточно очков в моих сюжетах. Я просто хочу, чтобы они выглядели идеально гладкими в программе просмотра векторной графики, что было бы в том случае, если бы пути были записаны с гладкими узлами, как показано на снимке экрана из Inkscape. Верхняя кривая имеет сглаженные узлы (я использовал кнопку «Сделать выбранные узлы автоматически сглаженными» в Inkscape), а нижняя — нет.
Если это невозможно напрямую с помощью matplotlib, есть ли программа, которая может сгладить все кривые в файле PDF или SVG?
q
иc
, для квадратичных и кубических кривых, причемt
иs
являются их непрерывными гладкими версиями, поэтому не нужно хотитеc
, вы почти наверняка хотитеs
. Самый простой способ — рассматривать многоугольные точки как координаты Катмулла-Рома, а затем преобразовывать каждый точечный сегмент в кубическую форму Безье, используя довольно тривиальную формулу преобразования, найденную в конце pomax.github.io/bezierinfo/#catmullconv - person Mike 'Pomax' Kamermans   schedule 05.09.2020s
, unlinec
гарантирует, что производные останутся непрерывными между соединенными сегментами кривой. Спасибо за чаевые! Но я не уверен, что вы имеете в виду, что ваши графики не являются кривыми. У нас могут быть разные определения слова curve. Насколько я понимаю, это кривые, определяемые координатами точек, возможно, производными по этим координатам и методом интерполяции (l
для линейной,c
для кубической,q
для квадратичной и т. д.). - person SU3   schedule 07.09.2020