MATLABs nowym silniku graficznym, HG2, nie drukować prawidłowo łat za pomocą renderujący artystów:trójkątne płaty split z malarzy renderujący w Matlab 2014b i powyżej
hist(randn(1,1000));
colorbar('Location','SouthOutside');
print('test.pdf','-dpdf');
Powstały łatek, czy wygenerowany przez hist
lub colorbar
mają trójkątne podziały:
problem został omówiony na MATLAB Central here i here, gdzie sugerowano wyłączenie opcji "płynnego rysowania linii" w przeglądarce pdf powinno rozwiązać problem. To ukrywa problem w niektórych czytnikach (np. W Adobe Reader, ale nie w Apple Preview), ale trudno jest poprosić współpracowników i czytelników o skorzystanie z określonej przeglądarki plików PDF z domyślnymi ustawieniami graficznymi. Patrząc na wynikowy plik w Inkscape, jasne jest, że podział jest obecny w wektorowej grafice wyjściowej. Tutaj przeniosłem połowę colorbar, udowadniając, że jest w rzeczywistości rozstali się w połowie, a nie tylko błędnie interpretowane przez pdf widza:
Problem nie występuje przy użyciu renderer OpenGL (print('test.pdf','-opengl')
, ale wtedy dane wyjściowe nie są wektoryzowane). Problem nadal występuje w MATLAB 2015a.
Czy istnieje sposób na eksport grafiki wektorowej bez artefaktów w programie MATLAB 2014b lub nowszym?
Jedyne rozwiązanie, które do tej pory znalazłem, to przetwarzanie końcowe, np. w programie Adobe Illustrator. Dla paska kolorów pomaga po prostu usunąć maskę przycinającą. Dla histogramu musisz wybrać wszystkie trójkąty (poprzez wybór tego samego wyglądu) i dodać cienki obrys konturu. Nie pomaga to, że MATLAB nie eksportuje trójkątów jako zamkniętych ścieżek, więc potencjalnie trzeba ręcznie zamknąć każdą ścieżkę, aby to działało. Jest to oczywiście możliwe tylko dla niezbyt skomplikowanych danych końcowych ... – zeeMonkeez