Tracer is a utility for digitizing data from images of graphs (which could be screenshots, scans, or graphics copied from another application and loaded from the clipboard). The interface includes tools for setting the image scale so that coordinates match those of the graph in the image. In X-scan mode, data are created in an attempt to follow a trace from left to right across the image between endpoints marked by cursors, and the data are extracted at the resolution of the image (one data point per pixel). In equal step mode, a step-length (number of pixels) is selected and the tracing is accomplished by scanning pixels in an arc with a radius of the chosen step-length. When the trace does not form a continuous path between the cursors (owing to poor image resolution, crossing lines, or dashed or dotted line types), the procedure attempts to search for the next line segment. Tracer distinguishes between different trace colors.

If you want to digitize data as individual points picked from a graph image, check out the Wavemetrics procedure IgorThief. Look under File > Example experiments > Techniques > Trace Graph.

Note that (unlike Trace Graph) Tracer doesn't make any correction for image skew, i.e. the axes are assumed to run parallel to the edges of the image.

How to use Tracer:

  • Select Tracer from the Data menu.
  • Load and display an image using the buttons in the Image Selection area of the Tracer panel. The load dialog also allows an image to be loaded from the clipboard.
  • Set Scale: Click 'Show' to add two pairs of horizontal and vertical cursors to the plot. Drag the cursors to known positions at the ends of the plot axes, then type the axis values in the SetVariable controls. Make sure the cursor positions are accurately reported before moving on.
  • Output: Select a name for the wave that will be created with the extracted data.
  • Select trace color in the Extract area of the Tracer panel. To sample colors from the image, look for the eye dropper icon in the color-picker dialog.
  • The 'fuzziness' slider affects how picky the tracer is about colors. You may have to adjust this setting for tracing to work.
  • Place cursors A and B at start and end of a trace and click on 'Extract Trace' to start digitizing.
  • Play with the gaps, jump threshold, and minimum range settings (or step length, sweep angle and maximum gap settings for equal step mode) to deal with incomplete lines and other problems.
  • If you're tracing a series of open symbols, use the minimum range setting to avoid tracing the symbol stroke.
  • If needed, you could use interpolate to clean up your traced data.

If you want to help Tracer to take the right path where traces cross one another, you can use the image editing button to touch up the image. Hold down the control/command key and click with the mouse to paint pixels with the selected color. Expand the graph view for more detailed editing. Use command/ctrl and scroll to zoom in and out, hold the shift key to accelerate zoom.

If tracing fails, be sure to try changing the fuzziness, jump threshold and gaps settings.


tracer logo

Project Details

Current Project Release

Tracer IGOR.8.00.x-5.70

Release File:
Version: IGOR.8.00.x-5.70
Version Date: Fri, 07/22/2022 - 01:59 pm
Version Major: 5
Version Patch Level: 7
OS Compatibility: Windows Mac-Intel
Release Notes:

Includes Bezier to Wave conversion, contributed by Christian Liebske, also includes some Bezier code by Jim Prouty. Reintroduces the 'equal step' algorithm used in the first version of Tracer. New 'folding panel' GUI. Pictures can be imported from clipboard - if vector graphics are found in clipboard conversion to bitmap is attempted.

Igor 9 is required for Bezier to Wave conversion. If you are using Igor 9 on Windows, version 9.01 or later is required for Tracer to work with all possible screen resolutions.

View All Releases

Hi Tony,

this is awesome! IgorThief is one of my favorites, but extracting smooth curves from plots is always a bit tricky!

Thanks a lot!



Edit: Just realised that this exists quite a while! Shame that I missed this all the years!

Hi Tony, I use the tracer package for some years now and like it a lot! I have two suggestions for improvements:

1) If I want to extract several traces from a graph, I usually first prepare a separate picture for each trace and color the trace I want in a distinctive color. Then I load the pictures successively and extract each trace. Since the size of each picture is exactly the same, I reuse the assigned scale. Currently, I have to dive into the package folder and copy over the scale manually. It would be nice to have a method to apply scales from one picture to another in the panel.

2) I am someone who wants to be extra precise, so I zoom in when placing the cursors. It would be nice to have a magnified view around the mouse cursor always open (also showing the cursor placement), to avoid this step.

In Version 5 you can right click on the image to copy and paste image scaling. See the notes in the file header for other changes.

Tony, thank you for this great update! Looks very sleek. One detail, though: Using the alt key on windows does not work because alt enables the image drag mode, so s.wheelDy seems to get eaten. Using shift (s.eventMod&2) instead would work fine.

Rats. I started out using cmd-shift, but I find that when using my mouse the shift key transforms dY to dX. That doesn't happen with the trackpad, so the code wouldn't work for both. I tried using cmd-shift + max (dX, dY), but then the zoom gets jerky when dX ~ dY. The cmd-option key combination seems to work fine on mac, despite option being the drag key. That's frustrating, because I've very quickly grown used to scroll-to-zoom. It works okay with just the control key, right?

Tony, no problem. A workaround would be to use Option on Mac and Shift on Win, but control-key only works good enough.




Igor Pro 9

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More