Featured Book

LaTeX Beginners Guide

Partner Sites

TeXwelt - Fragen und Antworten zu LaTeX
TeXblog
TeXample
Overcoming some flaws with graphics created using matlab2tikz PDF Print E-mail
(12 votes, average: 4.92 out of 5)
LaTeX - Graphics, Figures & Tables
Written by Frits Wenneker   
Wednesday, 20 June 2012 21:58

Matlab is a widely used numerical computation environment. It is easy to make plots in Matlab, which can be exported to vector format (PDF/EPS) for implementation in LaTeX. The problem is that the default Matlab plots do not fit very well in the style of LaTeX, due to the different font and font size of the text in the Matlab plots. My favorite way of creating Matlab figures with LaTeX fonts is by making use of the matlab2tikz script. On my website, I've already described how to use this. In general this method works great, although some flaws exist. In this post, I'll list the most frequent problems I encounter with matlab2tikz. I'll also describe how I solve these problems. Do not expect superefficient routines, I'll only give the commands that are not exported to TikZ when converting a Matlab plot with matlab2tikz.

- A contribution to the LaTeX and Graphics contest -

General command in Matlab

This is the red thread of this article. Exporting any figure is done with the following Matlab command:

matlab2tikz( 'MyFig.tikz', 'height', '\fheight', 'width', '\fwidth');

Subplots

When creating several plots in one figure, underneath or next to each other, the conversion with matlab2tikz makes all subplots of the same size. I'm working a lot with Bode plots: plots where a magnitude and a phase curve are plotted separately. I find it pretty too have the phase subplot half the height of the magnitude plot. The problem with matlab2tikz conversion is that you can specify only one height (and one width); all subplots will be sized to this height.

Assuming you have a figure with two subplots underneath each other, the exported TikZ file will have to axis environments, with specified heights:

height=\fheight

The solution is to find the second height (corresponding to the second axis enviroment), and change it like this:

height=0.5\fheight

Before and after:

Subplots

Axis ticks and ticklabels

The following problem comes more from the TikZ/pgfplots side. When the plotting range (e.g. the minimal and maximal value along the vertical axis) is too large, TikZ will leave out some axis ticks. This on its turn affects the grid (if any) in your figure. To specifiy custom ticks along the vertical axis (y axis), add the following to the axis environment:

ytick={1,2,3,4}

This will only create axis entries (ticks) at the values 1 to 4. In order to rename the defined ticks, use the yticklabels command:

yticklabels={a,b,c,d}

Like this, the tick '1' will be replaced by 'a', '2' by 'b', etc.

Before and after:

Axis ticks

Legends

I often find it convenient to have the legend entries all in one line (i.e. a horizontal legend, rather than vertical). In order to do this, add the following to the axis environment:

legend columns=-1

This needs to be placed before the legend entries={} command. In order to enlarge the space between the horizontal legend entries a bit, add this:

legend style={/tikz/every even column/.append style={column sep=0.3cm}}

Lastly, too save space I change the font size of my legend to \footnotesize. This is done as follows:

legend style={font=\footnotesize}

Before and after:

Legends

About the Author:Frits is a MSc student Mechanical Engineering in Delft, the Netherlands. During the BSc period of his study, he started to learn LaTeX. Soon he got hooked to this way of typesetting documents. As he was one of the few BSc students that used LaTeX, people asked him to teach them how to use LaTeX. This gave him the idea of setting up a blog. The website howToTeX.com is aimed for LaTeX beginners and is filled with tips, tricks and templates. He also is co-author of the 'five minute guide to LaTeX'. Once in a while, he writes about more advanced topics like his guide to improve LaTeX productivity.

Comments

avatar Gregor
0
 
 
Thanks for this post, this is certainly of big help for the Master's thesis I'm writing. I use matlab2tikz A LOT ;-)
B
i
u
Quote
Code
List
List item
URL
Name *
Email (For verification & Replies)
Code   
ChronoComments by Joomla Professional Solutions
Submit Comment
Cancel
avatar Frits
0
 
 
Thanks Gregor!
B
i
u
Quote
Code
List
List item
URL
Name *
Email (For verification & Replies)
Code   
ChronoComments by Joomla Professional Solutions
Submit Comment
Cancel
avatar Bas
0
 
 
Omg you're amazing! I also adore your website HowToTex.com. Keep up the good work
B
i
u
Quote
Code
List
List item
URL
Name *
Email (For verification & Replies)
Code   
ChronoComments by Joomla Professional Solutions
Submit Comment
Cancel
avatar LtheS
0
 
 
Thanks for this post. But I have some problems with the ticks along the x-axis. I'm not sure, is it an issue of matlab2tikz or of TikZ/pgfplots.

I have ticks in the range of 0 and 0.02. In Matlab I have ticks like 0.005, 0.01... But in Tikz/Latex/PDF i get 2*10^-3, 4*10^-3 and this looks ugly.

A small Example:
t = [0:1e-4:0.02]; g=sin(2*pi*50*t); plot(t,g);
matlab2tikz( 'test.tex')

B
i
u
Quote
Code
List
List item
URL
Name *
Email (For verification & Replies)
Code   
ChronoComments by Joomla Professional Solutions
Submit Comment
Cancel
B
i
u
Quote
Code
List
List item
URL
Name *
Email (For verification & Replies)
Code   
ChronoComments by Joomla Professional Solutions
Submit Comment
 

Latest Forum Posts



Unable to compile set of documents on miktex 64-bit
23/04/2014 01:03, offroad

Re: Psbrace isn't working
22/04/2014 22:22, CrazyHorse

Re: Trying to get PSTricks to work...
22/04/2014 22:05, CrazyHorse

Re: I'm tired of typing \left and \right all the time...
22/04/2014 13:44, mas

Re: Separate numbering for different reference types
22/04/2014 13:36, JefVL

Re: Separate numbering for different reference types
22/04/2014 12:55, Johannes_B

Re: Separate numbering for different reference types
22/04/2014 12:18, JefVL

Re: Problem pictures viewing [Texmaker]
22/04/2014 09:45, Ozzy86

Re: Problem pictures viewing [Texmaker]
22/04/2014 09:27, Johannes_B

Problem pictures viewing [Texmaker]
22/04/2014 09:04, Ozzy86