5.0

5.0 | 3 ratings Rate this file 43 downloads (last 30 days) File Size: 747 Bytes File ID: #15743

Fix dashed and dotted lines in EPS export

by Daniel

 

30 Jul 2007 (Updated 01 Aug 2007)

No BSD License  

EPS of dashed and dotted lines export badly. This modifies the EPS file to fix them.

Download Now | Watch this File

File Information
Description

I was very frustrated at not being able to export dashed and dotted lines in EPS format, as they come out weird. Finally I found a post somewhere on the internet that suggested editing a certain part of the EPS file to fix it. This is a function which, given the name of the EPS file, will modify the length of the 'dot', making it look better in the image.

I've found it useful to automatically add this function to my standard 'save figure' script, so it is always run.

In EPS file:
/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef

It seems the optimal numbers to go in the EPS file depend on the thickness of the line being drawn. This code changes only the .5 which corresponds to the length of the 'dot'. The number 4 controls the space between the dots. Setting both equal to 1 seems to work well with a Matlab line thickness of 1.5.

Acknowledgements
This submission has inspired the following:
export_fig
MATLAB release MATLAB 7.4 (R2007a)
Other requirements Should work on all platforms, but only tested on a mac.
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (5)
09 Apr 2008 Ronco Badsmith

This is a great fix. Thanks for the upload!

26 Apr 2008 Rich Germuska

Nice one.

For those still using legacy versions e.g. 6.0 release 12, just replace strfind() with findstr() as appropriate.

Works nicely on WinXP Pro.

05 Jul 2008 Klaas van 't Veld

Outstanding fix of a very annoying problem. I modified the script a bit to make it more flexible, adding arguments "dotlen" and "dotgap"

  function fix_dottedline(filename,dotlen,gaplen)

adding these lines at the top

  dotstr = ['[' num2str(dotlen)];
  gapstr = ['mul ' num2str(gaplen)];

and changing the replacement operations (for both the DO and DD lines) to

  thisLine = regexprep(thisLine,'[.5',dotstr);
  thisLine = regexprep(thisLine,'mul 4',gapstr);

That way you can play around with dot lengths and gap lengths until everything is just perfect.

12 Dec 2008 Oliver Woodford

This is a great idea. I haven't downloaded the file because I found the functionality first in fixPSlinestyle. However, you gave me the idea of automatically changing dash length with line width. This functionality is now available in my print_pdf and print_eps functions, so manual tinkering on a figure by figure basis is no longer needed.

10 Apr 2009 Oliver Woodford

See fix_lines (http://www.mathworks.com/matlabcentral/fileexchange/23604) for an equivalent function which automatically changes dash length according to line width.

Please login to add a comment or rating.
Updates
01 Aug 2007

Additional comment...

Tag Activity for this File
Tag Applied By Date/Time
annotation Daniel 22 Oct 2008 09:21:13
customization Daniel 22 Oct 2008 09:21:13
dash Daniel 22 Oct 2008 09:21:13
dot Daniel 22 Oct 2008 09:21:13
eps Daniel 22 Oct 2008 09:21:13
export Daniel 22 Oct 2008 09:21:13
figure Daniel 22 Oct 2008 09:21:13
 

MATLAB Central Terms of Use

NOTICE: Any content you submit to MATLAB Central, including personal information, is not subject to the protections which may be afforded information collected under other sections of The MathWorks, Inc. Web site. You are entirely responsible for all content that you upload, post, e-mail, transmit or otherwise make available via MATLAB Central. The MathWorks does not control the content posted by visitors to MATLAB Central and, does not guarantee the accuracy, integrity, or quality of such content. Under no circumstances will The MathWorks be liable in any way for any content not authored by The MathWorks, or any loss or damage of any kind incurred as a result of the use of any content posted, e-mailed, transmitted or otherwise made available via MATLAB Central. Read the complete Terms prior to use.

Contact us at files@mathworks.com