plotAddVBar

Purpose

Adds one or more vertical bars spanning the full extent of the y-axis to an existing graph.

Format

plotAddVBar([myPlot, ]x_start, x_end)
plotAddVBar([myPlot, ]x_loc)
Parameters:
  • myPlot (struct) – Optional argument, an instance of a plotControl structure.

  • x_start (scalar or Nx1 vector) – the X coordinate for the start of the bounding box for each respective shape.

  • x_end (scalar or Nx1 vector) – the X coordinate for the end of the bounding box for each respective shape.

  • x_loc (Nx2 vector) – the first column should contain X coordinates. The second column should be a binary vector with a 1 for locations which the bar should be drawn, otherwise a 0.

Examples

Add Bar Spanning the Bottom Quartile of X Variable

_images/plotaddvbar-cr-2.jpg
// Create file name with full path
dataset = getGAUSSHome("examples/nba_ht_wt.xls");

// Load variables from the Excel file
nba = loadd(dataset, "Height + Weight");

// Declare plotControl structure and
// fill with default settings
struct plotControl plt;
plt = plotGetDefaults("scatter");

plotSetTitle(&plt, "NBA Player Size", "Arial", 14);

plotSetXLabel(&plt, "Weight (lbs)", "Arial", 12);
plotSetYLabel(&plt, "Height (inches)");


// Draw scatter plot
plotScatter(plt, nba, "height ~ weight");

/*
** Add vertical spanning bar to indicate
** bottom quartile
*/

// Compute bottom quartile
qtls = quantile(nba[.,"Weight"], 0|0.25);

// Overwrite plotControl structure with bar settings
plt = plotGetDefaults("bar");

// Solid fill that is 25% opaque (or 75% transparent)
plotSetFill(&plt, 1, 0.25);
plotSetLegend(&plt, "Bottom Quartile", "bottom right inside");

// Add a vertical bar from x=qtls[1] to x=qtls[2]
plotAddVBar(plt, qtls[1], qtls[2]);

Add Recession Bars to a Time Series Plot

This example draws recession bars based on a matrix where the first column is a date and the second column is a binary indicator vector. Where the binary indicator vector is 1, a bar is drawn. The data comes from the FRED USREC dataset.

_images/plotaddvbar-cr-1.jpg
/*
** Draw time series plot
*/

// Create string with path to examples folder
path = getGAUSSHome("examples/");

// Load variables from the CSV file
beef = loadd(path $+ "beef_prices.csv", "date(date) + beef_price");

// Declare plotControl structure
// and fill with default values
struct plotControl plt;
plt = plotGetDefaults("xy");

// Draw x-tick labels every 5 years, starting at 1995
plotSetXTicInterval(&plt, 5, asdate("1995"));

// Draw time series plot
plotTSHF(plt, beef[.,"date"], "years", beef[.,"beef_price"]);

/*
** Add recession bars
*/

// Load US recession data
usrec = loadd(path $+ "USREC.csv", "date(date) + USREC");

// Reset plotControl to default bar settings
plt = plotGetDefaults("bar");

// Bar fill: solid, 15% opaque and gray
plotSetFill(&plt, 1, 0.15, "gray");

// Add legend item
plotSetLegend(&plt, "Recession", "top left inside");

// Add vertical bars to any location where
// the second column of 'usrec' contains a 1
plotAddVBar(plt, usrec);

Remarks

plotAddVBar() will add vertical spanning bars to existing graphs. It will not create a new graph, however, if one does not already exist.

plotAddVBar() is not yet supported for surface plots.

See also

Functions plotAddHBar(), plotAddVLine()