Getting Started

See here for Video tutorials: http://www.wavemetrics.com/products/igorpro/videotutorials.htm

Also Igo Pro has the full manual online as a PDF file.

Hints and Tips

Use the online forum

There are lots of useful hints and tips available at http://www.igorexchange.com/ - look there first.

Opening multiples copies of Igor

If you want to compare two experiments at the same time, open hold down the CTRL key when double clicking on the Igor Pro icon to open a second separate instance of Igor.

Exporting graphs to LaTex for papers and theses

Do not export your graph as a jpor png for use in LaTex unless you are exporting a grayscale/colourmap, or have imported a bitmap image into your Igor graph/layout (ie a png, gif or jpeg). It will look bad in print and the journal may reject it. It also makes huge PDF files. Instead:

  • Export the graph as EPS from Igor
  • Make sure that the "suppress preview" checkbox is ticked

Basic graph presentationfor QED-style graphs

  • Mirror axis should be on
  • Axis standoff should be off
  • Ticks should be inside (unless it is a colourmap)

Fine tweaking graphs

  • Rather than trying to fine tweak a graph with the mouse, simply close the graph window.
  • Igor will ask if you want to save a graph recreation macro - answer yes and give it a name - eg nicegraph.
  • Then go to the procedure window, and there you will see all the commands to perfectly recreate your graph.
    Individual items can be precisely fine tuned in the procedure.
  • To recreate the graph, simply type nicegraph() at the command prompt.

Embedding one graph in another

  1. Ensure the graph which is to 'host' the embedded graph is active (click on the top bar for example)
  2. Press Cntr-T to bring up the tools menu
  3. Select "Tools" mode by clicking on the cirlce, square and line icon (Tools icon) on the left. A selection of tools should appear below the "Tools" icon.
  4. Anywhere on the host graph right click. Select "New >> Graph". The usual "New Graph" window will appear, select the waves for the embedded graph.
  5. To modify the embedded graph, click on it and from the top menu bar select "Graph >> Modify Axis" for usual modification window (i.e. to create mirror-axes and so on...). All other options should be available to you under the "Graph" menu. The embedded graph can only be modified in tools mode.
  6. Return to the host graph by clicking on the little graph icon located above the Tools icon. You can modify the host graph in this mode.

Different colours for different wavesin a graph

If you have a lot of waves on one graph, you can get Igor to automatically make each one a different colour:
  • From Igor's Graph menu, choose Packages->Make Traces Different. (Generally useful tip: Check out the various Packages submenus when looking for something you have a feeling must be somewhere. The other place to look is in Windows->Help Windows->WM Procedures Index.)
  • See http://www.igorexchange.com/node/1535 for examples of programming with this function.

How to make one axis which is a duplicate, or a function of, another axis

If you want to plot one data set with say current on the left axis and conductance on the right:
  • Choose Graph->Packages->Transform Axes and click the Help button in the resulting control panel.

Embedding a LaTeX expression in their graphs, panels, layouts

See http://www.igorexchange.com/project/LaTeXinIGOR

Arranging annotations on a graph so that they can be precisely positioned vertically and horizontally

See http://www.igorexchange.com/project/AnnotationTools

Saving one graph and associated waves to a new experiment file

See http://www.igorexchange.com/project/SnapIt

How to extract rows and columns from a matrix

Use the image processing function:

  • Go the Analysis -> Package, and select "Image Processing"
  • Then the "Image" tab will appear next to the "Help" tab.
  • Use the Image Line Profiles function under the "Image" Tab.
Use the map[p][n] / map[n][p] format:

  • To access the nth row in a map, find out it's dimension, create a wave then assign it to map[n-1][p], i.e for the 2nd row, map[1][p] (first is 0th!).
  • Similarly, for nth col, use map[p][n-1].

Filtering with Igor

  • If you are using Igor Pro version 6 or greater, there is a Filter Design and Application control panel that comes built in to Igor. To use it, go to Analysis --> Filter. Click the help button at the bottom of the panel to bring up an Igor help file with more information on how to use the panel.
  • See also notes and examples here: NumericDemodulation


Often we need to differentiate data with Igor - e.g. to make colourmaps.

However differentiating noisy data is non-trivial. The simplest option, to take the difference between two adjacent points, generates huge noise.

So at the moment (2006-2010) we have been using a simple technique: fit a straight line to the data, and take the slope of that line to get the differential. This is documented here, Differentiation_function.pdf, and the full set of files is here ( IgorDifferentiation.zip.

However these routines still generate quite noisy results. There are better ways of differentiating the data, detailed here for example: http://www.holoborodko.com/pavel/?page_id=236. The method we have been using is perhaps similar to a least-squares Lanczos differentiato, or a SavitskyGolay filter - see http://www.ipredict.it/Methods/SavitskyGolay.asp.

We could also look into doing 2D differentiation for our colour maps:
  • See e.g. http://research.microsoft.com/en-us/um/people/jckrumm/SavGol/SavGol.htm and
  • Need to look up these references:
    • J. W. Luo, K. Ying, P. He and J. Bai, Properties of Savitzky-Golay digital differentiators, Digital Signal Processing, (year?)
    • J. E. Kuo, H. Wang, and S. Pickup, "Multidimensional Least-Squares Smoothing Using Orthogonal Polynomials," Analytical Chemistry, vol. 63, pp. 630-635, 1991.
    • Computation of Two-Dimensional Polynomial Least-Squares Convolution Smoothing Integers," Analytical Chemistry, vol. 61, pp. 1303-1305, 1989.
  • Does Igor do any of this in its image processing toolbox?
    From the Igor Manual (Image Processing Section Vol III p301): Calculating Derivatives
    Using the derivative property of Fourier transform, you can calculate, for example, the x-derivative of an
    image in the following way:
    Duplicate/O root:images:mri xDerivative // retain the original.
    Redimension/S xDerivative
    FFT xDerivative
    xDerivative*=cmplx(0,p) // neglecting 2pi factor & wave scaling.
    IFFT xDerivative
    NewImage xDerivative
    Although this approach may not be appealing in all applications, its advantages are apparent when you
    need to calculate higher order derivatives. Also note that this approach does not take into account any wave
    scaling that may be associated with the rows or the columns.
    -- AlexHamilton - 16 Jun 2010

Write cursor values directly into waves

  • Need to make the waves you want to write into first
  • Need to provide the number of the point in destination waves you want the cursor values to be written into
Function CsrIntoWave (num, xWAVE, yWAVE)

Variable num


return 0



create new tag


Topic attachments
I Attachment Action Size Date Who Comment
Differentiation_function.pdfpdf Differentiation_function.pdf manage 66 K 16 Jun 2010 - 11:56 AlexHamilton Notes on the simple least squares differentiation function
IgorDifferentiation.zipzip IgorDifferentiation.zip manage 51 K 16 Jun 2010 - 11:58 AlexHamilton Least squares differentiation files
Topic revision: r15 - 15 Nov 2012, AlexHamilton
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback