Index Of Tools
ToolExample
animation6
bar plot3
color shading1, 3, 4, 5
contour2, 5
cross section5
custom colorscale7
data viewer1, 2, 3, 5, 6
land mask8
land overlays1, 2, 4
line plot3
matching grids8
multiple variables4, 5
scatter plot3
vector4
MJO Diagram9

Visualizing Data

The data selection and manipulation capabilities of the Data Library are extremely valuable on their own, but its data visualization techniques make the Data Library the truly complete tool that it is.

While a discussion of all of these capabilities is not practical for this tutorial, a summary of the most commonly used tools is offered here. As in the previous sections, you will learn how to use these tools with the interface utilities as well as with Ingrid commands in expert mode. It is suggested that you become acquainted with all of the functions described in this section by working through it example by example. However, if you are looking for an example of a particular tool, then please refer to the following tabular index.

Example 1: Create color maps of global monthly SSTA for June 1998 with 1) the land in black, and 2) the continents outlined.

Start at the ERSST v3b* dataset main page.
Select the monthly SSTA data variable.
Select the June 1998 time period.
CHECK

START

Method 1: Views Links
There are three colored views icons in the Views function tab and two of them represent the maps that we want to create.

Select the icon that shows the continents outlined. CHECK
Go back to the June 1998 SSTA page with either the back button or the source bar.
Select the icon that shows the land in black.
CHECK
Go back to the June 1998 SSTA page with either the back button or the source bar. CHECK
Note the other views icons in the Views tabs. You can obtain maps similar to these images (e.g., contoured maps) by selecting them as well.

Method 2: Data Viewer
These same options are available in pull-down menus in the Data Viewer.

Select the icon for colors with coasts in the "Views" tabs.
Locate the pull-down menu with the default "draw coasts".
Browse this menu and its options to create maps with a variety of continent and country information.


Go back to the June 1998 SSTA page with either the back button or the source bar. CHECK

Method 3: Expert Mode
While in expert mode, enter the following line below the text already there.

X Y fig: colors land :fig

Click "OK". CHECK
From this page, you can click on the Options tab to enter the data viewer.
To produce a map with the continents outlined, replace X Y fig: colors land :fig with X Y fig: colors coasts :fig.

As mentioned in Method 2, all of the options in the pull-down menus can be put directly into expert mode. In this case, where we are only plotting colors and various overlays, the proper order of these options is as follows:

color_scale
X Y fig: colors overlay_descript overlay_type :fig
Specifically, to create a map of SSTAs using the default color scale for SST data with grey land:

Delete any figure information existing in the text box. Only the dataset, variable, and time selections should be in the text box. CHECK
Enter the following lines:

sstcolorscale
X Y fig: colors gray land :fig
Click "OK". CHECK

Example 2: Create a contoured map of January ZMD ENACTS rainfall ALL monthly climatology with contours of varying characteristics (e.g., thickness, type, etc.).

This example provides the opportunity to explore many of the features of the data viewer.

Find the ZMD ENACTS rainfall ALL monthly dataset using one of the methods highlighted in Part I or go directly to it here*. CHECK
Select the monthly ZMD ENACTS rainfall ALL monthly climatology data variable.
Select the month of January.
CHECK

START

Method 1: Data Viewer
Select the views icon that is contoured. CHECK
Return to the January ZMD ENACTS rainfall ALL monthly climatology variable page. CHECK

Method 2: Expert Mode
As in Example 1, the contour characteristic options available in the menus of the data viewer can be put directly into expert mode. The proper order of these options is as follows:

X Y fig: contour_descript contour_descript contours overlay_descript overlay_type :fig

Try creating a map of ZMD ENACTS rainfall ALL monthly climatology in yellow dashed medium contours with coasts and countries outlined in solid thin blue lines.
Enter expert mode.
Enter the following lines below the text already there.

X Y fig: yellow uniform dashed medium contours blue solid thin coasts countries :fig
Click "OK". CHECK

You can also specify the contour interval in expert mode as well. For example, to specify a contour interval of 100mm,
Put the following line before the X Y fig specifications.

DATA 100. STEP
Click "OK". CHECK

Example 3: Create line, scatter, and bar plots of monthly rfe_merged data near 31.5°E, 10°S.

Start at the ZMD ENACTS rainfall ALL monthly* dataset.
Select the rfe_merged data variable.
Select the grid point near 31.5°E, 10°S.
CHECK

START

Method 1: Data Viewer
The three Views icons in the tab represent the three types of plots we want to create. Feel free to use these links to look at the plots. Right now we will take a closer look at the line plot and its options.

Select the icon for the line plot.
Return to the rfe_merged variable page.
CHECK

Method 2: Expert Mode
Similar to the previous examples, we follow the same general syntax in Ingrid to create these types of plots. However, there are some slight, yet important differences. Let us look at an example of each plot.

Line Plot
Try creating a line plot with a red medium-thick line.
Syntax: T fig: line_descript line_descript line :fig

Enter expert mode.
Enter the following lines below the text already there.

T fig: red medium-thick line :fig

Click "OK".
Return to the rfe_merged variable page. CHECK

Bar Plot
Try creating a bar plot with the precip_colors colorscale.
Syntax: colorscale dup T fig: colorbars2 :fig
Note the use of dup in the syntax. This Ingrid command duplicates data streams and is necessary when making a bar plot where the color of each bar is dependent on the value of the variable, or, in other words, the height of the bar. Ingrid duplicates the data you want to plot and then uses one copy to plot the height of the bar and the other to plot its color. It is possible to create a bar plot where the height and color of the bars represent different information. For example, this is a bar plot where the height of the bars indicates monthly rainfall and the color of the bars indicates maximum temperature. Right now let us create a more simple bar plot.

Enter expert mode.
Enter the following lines below the text already there.

precip_colors dup T fig: colorbars2 :fig
Click "OK". CHECK
Some colorscales can have pre-defined ranges, you can cancel them and use the colorscale of your choice with the actual range of the data by adding:
DATA AUTO AUTO RANGE

after having invoked the colorscale (so here before dup). Or you can replace AUTO by the numerical value of your choice.

Scatter Plot
Try creating a scatter plot in expert mode.
Syntax: T exch fig: scatter :fig
Note the use of exch in the syntax. The exch command exchanges items in the stack. You can think of the stack as the order of the information presented to Ingrid. In this case, the rfe_merged variable is the first item in the stack and the time grid is second. When a scatter plot is made, it puts the first item in the stack on the horizontal axis and the second on the vertical axis. However, it is typical for a time series such as the one we are creating to place time on the horizontal axis. Therefore, we must exchange the two items in the stack. Feel free to execute the following command with and without the exchange and observe the difference.

Enter expert mode.
Enter the following lines below the text already there.

T exch fig: scatter :fig
Click "OK". CHECK
As with the bar plot, it is possible to create a scatter plot where color is indicative of another data variable. For example, this scatter plot uses tmin and tmax to scatter the Feb 1983 data points while the color of each poin represents rainfall.

Example 4: Create a map of 1000mb wind vectors and precipitable water (color shading) for the tropics and subtropics in Aug 1992.

We introduce another new dataset for this example- the NCEP-NCAR Reanalysis (CDAS-1).

Find the CDAS-1 dataset using one of the methods highlighted in Part I or go directly to it here*. CHECK
Select MONTHLY data variables.
Select Intrinsic data variables.
CHECK
At this point, you should be able to locate the variables we want under the datasets and variables heading. Precipitable water is located under the total_air_column link and the u and v components of the wind that we want are under the PressureLevel link. In general, it is best to plot color shading first and then the contours, vectors, etc. Therefore, we should select the variables (or put them into the stack) in that order as well.

Select the PWAT data variable.CHECK
Select the date Aug 1992.
Select the latitutes between 60˚S and 60˚N.
CHECK
While in expert mode, select the u and v components of the wind and limit them to the same T and Y limits as the PWAT data variable.
Select the 1000 mb pressure level for the wind component variables.
CHECK

START

Let us also put the coast and countries lines on this map.

Enter the following line in the text box below the text already there.

X Y fig: colors vectors coasts countries :fig
Click "OK". CHECK
You have just created a map of the low level winds and precipitable water in the sub/tropics for August 1992. The 26 of that month was the Louisiana landfall of Hurricane Andrew (see the Gulf of Mexico). This same hurricane produced incredible amounts of damage in the southern counties of Florida. Note we could have choosen a specific colorscale by indicated it before the fig command as in Example 1.

Example 5: Create a cross section displaying the spring temperature (color shading) and salinity (contours) of the Indian Ocean at the equator.

Start with the Levitus94* dataset.
Select the SEASONAL data.

As in the Example 4, we want to plot color shading (i.e., temperature) before the contours (i.e., salinity). Therefore, let us select the temperature variable first.

Select the Temperature data variable.
Select the spring season (Apr-Jun).
Select the rough longitudinal span of the Indian Ocean, 50°-90°E.
Select the equator.
CHECK
While in expert mode, select the salinity variable and limit it to the same X, Y, and T limits as the temperature variable. CHECK

START

Enter the following line in the text box below the text already there.

X Z fig: colors contours :fig
Click "OK".
You have just a created cross section that illustrates how temperature and salinity varies with depth in the Indian Ocean at the equator in the boreal spring. However, we have put the surface of the ocean at the bottom of the plot. Let us enter the data viewer to fix this and take a closer look at the data.

Click on the plot to enter the data viewer.
Put "0" and "5500" in the appropriate text boxes along the vertical axis to put the surface of the ocean at the top of the plot.
CHECK
You may notice that the largest gradients in these two parameters lie in the first few meters of the ocean. Let us look at this area specifically.

Use the same text boxes to zoom-in on the upper 200m of the ocean. CHECK
We can even adjust the colorscale to better see these data.

Use the scale text boxes to make the lower limit 10°C. CHECK
This should you give a good idea of the tools conveniently available to you in the data viewer that allow you adjust and enhance the plots created with expert mode.

Example 6: Create a global animation of monthly SST data from 2001.

Start at the ERSST v3b* dataset main page.
Select the monthly SST data variable.
Select the Jan 1-Dec 31 2001 time period.
CHECK

START

Select the views icon with colors and the land in black.
The viewer will automatically plot the last time step of your selection.

To create an animation, enter "1 Jan 2001 - 31 Dec 2001" in the text box above the image.
Click "Redraw".
CHECK
Your image should now be animated. You can also adjust the speed of the animation with the tools in the data viewer. Note in the table under the image the options with the heading "animation frame times". Try using these tools.

Slow down the animation by replacing the default "25" values with a larger number.
Click "Redraw".

Keep in mind that nearly any image you create can be animated in this way.

Example 7: Create a custom colorscale for temperature anomaly data.

While there are many useful pre-existing colorscales available, you may want to customize a colorscale at some point. Let us first look at an example of how a custom colorscale looks in the data viewer and in expert mode and then use it as a reference to create another custom scale.

The CAMS monthly temperature anomaly map is a commonly used map in the IRI maproom.

Click here for the CAMS temperature anomaly image and here for the Ingrid code in expert mode.
Keep in mind that all of the figure commands are not shown here. Only those pertinent to the colorscale are shown. Let us go through this code line by line to describe what each does and how it is displayed on the map.

startcolormap Starts the series of Ingrid code that defines the colorscale.
-10. 10. RANGE Sets the upper and lower limits of the colorscale.
white purple Sets white as the color for the areas with missing data and purple as the color for data values less than -10°C.
purple -10. VALUE Sets purple as the color at the value of -10°C.
cyan -1. VALUE Sets cyan as the color at the value of -1°C. The colorscale will automatically blend between the -10°C and -1°C data values.
white white 1. bandmax Sets white as the color for values greater than -1°C and less than 1°C.
yellow 1. VALUE Sets yellow as the color at the value of 1°C.
red 10. VALUE Sets red as the color at the value of 10°C. The colorscale will automatically blend between the 1°C and 10°C data values.
firebrick Sets firebrick as the color for data values greater than 10°C.
endcolormap Ends the series of Ingrid code that defines the colorscale.

Create a color scale for ZMD ENACTS temperature ALL monthly anomalies data like the one below. It has the following attributes:
1. data range of -5° to 5°C
2. missing data indicated in SlateGrey
3. data values greater or less than data limits in grey
4. colors representing data greater than -5°C and less than -4°C blend from NavyBlue to CornflowerBlue
5. colors representing data greater than -4°C and less than -0.5°C blend from CornflowerBlue to LightCyan
6. colors representing data greater than -0.5°C and less than 0.5°C blend from LightCyan to LightGoldenrodYellow
7. colors representing data greater than 0.5°C and less than 4°C blend from LightGoldenrodYellow to salmon
8. data values greater than 4°C in IndianRed

Start with the temperature anomaly calculated here for you temperature anomaly data here.
Enter expert mode and use the above example to write Ingrid commands that will create the above-defined colorscale.
CHECK EXPERT
You can find a chart of many other colors that are available in Ingrid here.

Example 8: Create a land mask for SST data.

The land overlays described in previous examples are excellent tools for visualizing data in reference to land masses. However, these overlays only act visually and do not alter the data itself. If you download data after using a land overlay in the data viewer, you will still receive the original data values at the grid points that coincide with land. There may be times when you would like to adjust the data to account for land masses. We use the Reyn_Smith dataset again here. In this dataset, all grid points have SST data, even those that coincide with land. This is often an undesirable characteristic and we will therefore create a land mask that will give SST data at grid points that coincide with land a value of NaN.

Start with the Reyn_Smith* dataset.
Select the monthly SST data variable.
CHECK

START

Unfortunately, there is no data in the Reyn_Smith dataset that we can use to distinguish grid points that coincide with the ocean from those that coincide with land. We need another dataset for this information. The WORLDBATH dataset has elevation data that we can use to make this distinction.

A point that was discussed repeatedly in Part II is how important it is that grids match when variables are to be compared. Therefore, we should take note of the spatial grids of the Reyn_Smith SST data:
Longitude grid: /X (degree_east) periodic 179.5W to 179.5E by 1. N= 360 pts :grid
Latitude grid: /Y (degree_north) ordered 89.5S to 89.5N by 1. N= 180 pts :grid

While in the expert mode, enter the following line after the text already there to select the topography data in the WORLDBATH dataset.

SOURCES .WORLDBATH .bath
Click "OK". CHECK
Note the spatial grids of the topography data:
Longitude grid: /X (degree_east) periodic 0 to 0.08334351W by 0.08333333 N= 4320 pts :grid
Latitude grid: /Y (degree_north) ordered 90S to 90N by 0.08333334 N= 2161 pts :grid

We can not use these two variables together until their grids match. That can be done with the Ingrid command, regridLinear, that regrids the current data variable to match the grids of the variable above it in the stack. In this case, the X and Y grids of the topography data will be regridded to match those of the SST data.

Enter the following line below the text that is already there.

[X Y]regridLinear
Click "OK". CHECK

Now that the spatial grids match, we continue with building the mask. First, we want to mask out the land grid points in the topography dataset. Land grid points should be those with an elevation greater than zero.

Enter the following line below the text that is already there.

0 maskgt
Click "OK". CHECK
You now have a topography dataset that only contains data for the ocean grid points. We will use the add command to combine these data with the SST data. However, we do not need to know the actual elevation value at each grid point. Therefore, if we multiply the topography dataset by zero we will have dataset consisting of 0's and NaN's that we can, in turn, add to the SST dataset to obtain a land-masked SST dataset. Let's try it.

Enter the following lines below the text that is already there.

0 mul
add

Click "OK".CHECK
Select the color views icon with no land overlays to see the resulting SST dataset.
You should see the land in white as this is the default color for missing data in the SST colorscale.

Example 9: Create a MJO Diagram.

This is an example of how to create a typical MJO Diagram from RMM1 and RMM2 variables. We are going to use RMM1 and RMM2 variables to build a background of dots in the RMM1/RMM2 plan, then overlay them with dots colored by the Date associated with the time grid T, then link the dots with lines and eventually overlay 0 vertical and horizontal lines, the unit circle and diagonals of the RMM1/RMM2 plan. So we need to build our stack as follows:

Start with this BoM dataset that we will use for the example.
Make a selection in time T for a time span relevant to an MJO Diagram, for instance 1st to 21st of May 2017.

  T (1 May 2017) (21 May 2017) RANGE

CHECK.
Put in your stack the RMM1 and RMM2 variables that will be used by scatter.

  a- .RMM1
    -a- .RMM2 -a

CHECK.
Make a copy of RMM1 and RMM2 that will be used by scattercolor.

2 copy

CHECK.
Now we need to create a date variable from the time grid T that will be used to color dots and to show corresponding dates on the color scale. To do so we first need to convert the time grid T into a variable and give it a name different than /T, for instance /Date.

T CopyStream
       /name /Date def

CHECK.
Apply classify and dominant_class combo to transform this Date numerical variable into a categorical variable with Dates as the Key.

       classify
       [Date]dominant_class

CHECK.
Classify applies a grey color scale and dominant_class some long_name, so now is a good time to apply a color scale (e.g. rainbowcolorscale) and a long_name for the color scale label (e.g. Date).

       /long_name (Date) def
       rainbowcolorscale

CHECK.
Now we just need to fetch RMM1 and RMM2 again for use by scatterline to draw lines between dots. It is also a good time to personalize long_name attributes that will be used to label the axes of the figure, and fullname attribute that will be used as legend for the line.

       2 index
        /long_name (RMM1) def
        2 index
         /long_name (RMM2) def
         /fullname /MJO def

CHECK.
The stack is now ready and we can create our figure.

         fig- scatter scattercolor scatterline -fig

CHECK.
A typical MJO Diagrams would be square so we can set the axes size ratio to 1 and the plot would range from -4 to 4 for both axes. Also we can increase the font size to make bigger dots.

         /XOVY 1 psdef
          /RMM1 -4 4 plotrange
          /RMM2 -4 4 plotrange
          /fntsze 20 psdef

CHECK.
Eventually we can add overlays that are not using objects in the stack: the diagonales with identity and identopp keywords, the unit circle, the zero horizontal and vertical lines.

identity identopp [0 0 1] circle zeroline 0 0 0 verticallines

CHECK.
Optional anti-aliasing may make your graph looks nicer.

          /antialias true psdef

CHECK.
Congratulations, you made your first MJO Diagram with the Data Library, you can now apply all or part of this example to other SOURCES.
Here is an example with forecast input.