- This issue needs to be fixed by MathWorks
- The internal reasons why this happens are not visible to us

조회 수: 216(최근 30일)

A wise scientist knows, that if they wants their data to be published with best quality then they must publish their figures in PostScript (vector) format.

For Matlab they would need to use 'Painters' render function when exporting their figure (either with print, saveas, export_fig commands). This way the figure becomes independent of resolution (and other benefits concerning line widths and types).

After graphical engine upgrade in Matlab 2014b items on PostScript figures have become fragmented. Patches have become combination of triangles and rectangles and lines have become weakly joint polygons. I can't find a single note about it in update notes -.-

There are many inquiries about mysterious lines appearing on figures:

- http://se.mathworks.com/matlabcentral/answers/162257-problem-with-patch-graphics-in-2014b-splits-in-two-along-diagonal
- http://se.mathworks.com/matlabcentral/answers/16295-figure-export-to-eps
- https://github.com/altmany/export_fig/issues/44
- http://stackoverflow.com/questions/29824739/matlab-edges-of-patches-visible-after-export-as-vector-graphics
- ticket #01887614

However proper answer or solution is still absent.

Is it a MATLAB issue, or some kind of general PostScript issue? Have this happened with other graphics software also?

Why such "upgrade", which made eps format unusable, was necessary?

What can users do to avoid or fix such poor graphics? (beside switching software)

There is a striking number of earth science (probably also in other fields) papers already published with fragmented "vector graphics" (eg. Article1 , Article2 fig7-8 ,). Not the mentioning increase in size of figure/document/publication that is result of retaining information for each subelement on figure.

See how does your MATLAB handle this issue:

contourf(peaks(100));saveas(gcf,'figure.eps','epsc')

Is it an issue after all?

Stefan Spelitz
9 Apr 2017

Yes, this problem is all over the internet.

It seems to be an internal Matlab problem, maybe related to their graphics engine HG2. A discussion about this can be found here.

As a workaround I proposed a Matlab script for post-processing .eps files. Of course this does not solve problems with .svg or .pdf files. But .eps files could be manually converted to these formats by using other software (e.g. Illustrator, Inkscape).

Be aware that my tool groups elements according to their properties (e.g. line color, width, ...) which might not be what you want, since two separate lines with the same color might be grouped together in the same layer.

The underlying problem in Matlab seems to be that the exported data is separated into different path elements although logically they should be grouped together. As a result some vector graphics viewers have problems visually merging these clearly separated paths.

As a conclusion:

- This issue needs to be fixed by MathWorks
- The internal reasons why this happens are not visible to us

Neuroscientist
17 Jun 2018

Hi Stefan,

Since you have already prepared this useful script, I'd like to ask, would it be possible to make this script .ps compatible as well? This is especially useful for printing multiple pages into a single file.

Thanks Abbas

Steve Hansen
27 Oct 2017

Mathworks proceeded to break their own software three years ago and has done little to respond to the needs of their customers, except for denying the problem and blaming the issue on other people/software.

This issue has been eye opening for me. I used to strongly support Matlab and suggest that everyone use it due to the increased productivity it provided. However, there are very real dangers posed by vendor lock-in, particularly as it applies to science and publishing. Even if it requires more effort, I think open source alternatives are critical for maintaining autonomy.

Pavaman
11 Oct 2018

Gerrit Ecke
19 May 2019

First of all: incredible, Mathworks. You are really trying to sell this as a feature/improvement over the old renderer? If there are oblique borders you render tons of triangles. I am really annoyed, this thing has made my plots ugly for some time now and I have spent ages to fix this thing manually in some cases.

with 2017b the post-processing script doesn't work any more. I found a solution that works for me when I display stuff with contourf. Inkscape (after taking ages to load the 3.5MB svg file MATLAB generates) has the option to select everything of the same color. Hit F2 to enter "edit paths by nodes" mode, select one of the many triangles, right click on it and navigate to "Select Same" --> "Fill Color". The myriads of triangles should be selected now. In the menu bar select "Path" --> "Union". After all paths of the same color are joined you can try "Path" --> "Simplify", for me this usually also works and reduces the number of nodes to a decent number.

Only flaw so far is that sometimes there are additional objects that will also be selected with this method and have to be attended to manually.

Mathworks, please implement a postprocessing in this line for svg export (not based on color I mean of course)!

Cheers.

Preetish Kakkar
20 May 2019

Gerrit Ecke
21 May 2019

Dear all,

apologies for my bad tamper in my original e-mail. I know how it is with these things. However, I feel that this particular issue should have high priority, given the price of the product.

Same experience like Ilja: I have also once re-rendered heat plots generically as pixel graphics and combined it with custom vector graphic outline on top. I think it was a Robinson projection. This would be an adequate general solution in my opinion, however, my code was not general enough, I am afraid.

I do not have the opportunity to try the latest Matlab release, unfortunately. I am not sure whether I understand Ilja right that the problems in contourf are already fixed. If not, I think my solution is very easy and quick to implement. I guess the individually colored panels, i.e. the surfaces between contour lines, have separate representations internally. The "union" opreation here would be sth. like the hull of all nodes of this object.

Evelina Thunell
15 Dec 2017

편집: Evelina Thunell
15 Dec 2017

I exported a matlab figure with a shaded area made with "fill" from matlab, and kept getting line artifacts on the shaded area for vector formats. Very annoying! epsclean did not solve my problem (the artifacts are less pronounced but still there). Then I found this solution:

https://github.com/dfarrel1/fix_matlab_vector_graphics

I did this in Windows 7 with Adobe Illustrator CC 2018 and Matlab 2017a: Save your figure in matlab as a pdf file. Download the stuff from the link above. Open your pdf file in Illustrator and do File-Scripts-Other scripts: pick the file fixMatlabPDFOutput.jsx that you have downloaded. And voila, your artifact pdf is now overwritten by a nice-looking one (and it's still vectorized).

Preetish Kakkar
7 Apr 2018

편집: Preetish Kakkar
7 Apr 2018

Preetish Kakkar
11 Oct 2018

Opportunities for recent engineering grads.

Apply Today
## 댓글 수: 7

## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_389455

⋮## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_389455

## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_415293

⋮## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_415293

## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_433728

⋮## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_433728

## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_441765

⋮## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_441765

## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_441832

⋮## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_441832

## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_443152

⋮## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_443152

## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_458580

⋮## 이 댓글에 대한 바로 가기 링크

https://kr.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces#comment_458580

Sign in to comment.