MATLAB Plot Catalog

Summary

The plot catalog is a UI that lets the user select from MATLAB's numerous plot types. It displays categorization, thumbnails, and usage details at the point where the user needs it most, thus serving as both documentation and as a functional UI.

Design Context

Many MATLAB users know a few basic plot types -- simple line plots, 3D surface plots, and scatter plots, for instance -- but most are unaware of the 50+ plot types that they don't use. Experienced users tend to interact with MATLAB via a command-line interface, which doesn't support the serendipitous discovery of unknown features. Therefore, discoverability was a big challenge.

Another motivation for this UI was a new feature that allowed a user to plot data directly from a list of data items. This "plot picker" (shown below) is a custom control that provides a context-sensitive list of common plots that can be created from the user's selected data. But only the most common plot types are shown. The rest would reached via a "More Plots..." menu item. So a larger-scale selector needed to be created to handle the many plot types available.

Finally, no one had ever sorted all the MATLAB plot types into an organizational scheme that users could understand. Even users who knew about MATLAB's great variety of plot types were unlikely to find what they needed in the traditional documentation.

So the three formal goals I needed to meet were:

Personally, I also wanted to create a UI with aesthetic appeal -- something that would make users say "Cool!" and draw them into open-ended browsing. I had to work within the established desktop look-and-feel, however.

Solution

First, I used card-sorting exercises to help me categorize the plot types. I found that a faceted approach worked best -- users may look up plots based on either functionality (such as histograms or volumetrics), or simply on what the plot looks like (3D, polar, etc.). Any one plot type may thus be found in more than one category.

I asked our technical writers to compose very short, descriptive help pages, one for each plot type, that could fit into a small GUI. I also built a set of icons to represent each plot type. I put all these together into a browsable and selectable GUI, which can be reached from several places in the overall MATLAB interface. It's also possible to create plots directly from this GUI.

The underlying structure of the information is a hierarchy. I chose to use the Cascaded Lists pattern to present it, rather than a traditional tree -- I wanted the UI to be spacious, unfussy, and easy to browse.

Technical Details

In order to present all this information about plot types -- and to support the custom dropdown that dynamically changes the available common plot types -- I needed metadata about each one: its name, arguments, icons, help page, and so on. Building this metadata took most of the development time. Once done, however, the resulting generic data structures could support any GUI or API that needed it.

Back to Consulting Services