Mass Spec Graph

A graph control specifically built for mass spectrometry data. High performance, simple API and extensible.
MassSpecGraph overview


Generic graph controls can be used to render spectra and chromatograms, however there are many specific details that scientists look for in order to be able to effectively study and explore mass spectrometry data. Details such as performance on large data sets, user interaction and annotations which are often absent and difficult to incorporate into existing generic graph controls. Due to these challenges, we built a mass spectrometry data specific graph control written in the latest technology for Windows based platforms.


Mass Spec Graph was built at a WPF Framework level to maximize performance on large data sets. Even with HD data, Mass Spec Graph can render 100,000 data points in under 500ms using a typical computer today.


When scientists are examining data there is no room for extra design elements, so we wanted to have a clean and simple graph that highlights the data as the most important aspect of the pixels presented.

Peak labelling can be optionally applied to the plot. An obclusion algorithm will filter through the peak list provided and depending on the graph's current visible range it will dynamically remove labels that create too much visual clutter. Label position is also manipulated to maximize the number of labels visible and still provide a minimal amount of obclusion.

Peak labeling on mass spectrum

Annotations are a very common necessity, so we provide two standard annotations that minimize the impact on the presentation of the data to the researcher. Our annotations also allow interaction thus providing the ability to programmatically link out to other content referred to in the annotation.

Annotation on a mass spectrum

One other often neglected, yet important feature is the ability to export graphs to an image for the purpose of scientific publication. Mass Spec Graph allows exporting of plots to image files where the user can also adjust the image size, font sizes, axis caption labels and visible range of the plot to match their needs within a publication.

User Experience

The most crucial interaction for a mass spectrometry graph control is the ability to quickly and accurately manipulate zooming on the data set. Zooming in generic graph controls is commonly handled using a dragging motion on the plot surface which zooms the plot in both the x and y axis domains. Instead of this method, the Mass Spec Graph uses the x and y axis areas to control zooming. Additionally zoom indicators are presented in real time to show the exact start and stop point of the selected zoom region.

Zooming on a mass spectrum

Beyond zooming, selecting specific regions within a plot area is another feature necessary for mass spectrometry data. It is common to be viewing a chromatogram and want to select a region or specific point within the graph to open either an average or single spectrum for the selected region. The Mass Spec graph supports such selection with convenient methods to trigger secondary action based on the selection.


Any graph control is only as good as it's development API since ultimately software developers will need to be able to integrate and extend the control to meet their specific needs. Both XAML and C# programmable interfaces allow easy access to the features within the graph control. This makes including interactive features simple as you can interface with the control in the easiest method depending on your use case. Mass Spec Graph has been designed to be extensible from its core. Each part of the graph is customizable (eg. x-axis, y-axis, plot area, etc) both programmatically and in XAML.

Example app with MassSpecGraph