Я использовал скрипка для генерации (так называемых) скрипичных сюжетов в Matlab.График выглядит хорошо:
Однако, печать его (как в pdf, так и в svg) приводит к файлу, в котором видны линии триангуляции (увеличенный, чтобы подчеркнуть):
Думаю, это какая-то проблема с настройками zbuffer этих строк или что-то в этом роде.Под капотом violin
просто использует fill()
таким способом, который кажется вполне законным:
h(i)=fill([F(:,i)+i;flipud(i-F(:,i))],[U(:,i);flipud(U(:,i))],fc,'FaceAlpha',alp,'EdgeColor',lc);
Замена fill
на patch
не решает проблему!Минимальный, полный и проверяемый пример:
a=randn(10000,1);
[f, u, bb]=ksdensity(a,'bandwidth',0.2);
figure; fill([f'+i;flipud(i-f')],[u';flipud(u')],'b','FaceAlpha',1);
print(gcf,'-dpdf','a.pdf'); % bad
print(gcf,'-dsvg','a.svg'); % bad
figure; patch([f'+i;flipud(i-f')],[u';flipud(u')],'b','FaceAlpha',1);
print(gcf,'-dpdf','b.pdf'); % bad
print(gcf,'-dsvg','b.svg'); % bad
Результат:
Моя версия R2017a.