Help: noise-spectrogram v.1


The noise-spectrogram web service returns spectrograms for seismic channels based on PDF daily mode values.



The Power Density Function (PDF) represents the distribution of noise power as a function of frequency. The PDF mode function represents the most commonly occurring (most likely) noise power level as a function of frequency.

The following plot, from the noise-pdf webservice, shows a computed PDF from 19 years of data from one seismometer along with the computed mode function.

The noise-spectrogram web service reveals how the daily values of the PDF mode function vary over time in a color coded format. It is complimentary to the noise-mode-timeseries which returns the same information in a time-series plot format or in numerical formats.

The following plot, from the noise-spectorgram web service, shows the daily PDF mode variations from the same data used to make the previous plot.

Daily Modes ANMO

The web service provides an output option that allows the PDF modes to be displayed relative to the Peterson noise models or relative to user defined noise models. See “Noise Model Comparison” for details.

Range Selection

The date range, frequency range and power range may all be individually specified via the following parameters:

Parameter                  Discussion                                               Example
start                      Start date.  Defaults to earliest available data.        start=2010-02-04
end                        End date.    Defaults to latest available data.          end=2010-02-04    
plot.time.matchrequest     Determines the behavior of what date range is plotted.   plot.time.matchrequest=false
plot.frequency.range       Sets the range of the frequency axis.                    plot.frequency.range=0.001,100
plot.powerscale.autorange  Determine power color scale mapping based on percentile  plot.powerscale.autorange=0.9
plot.powerscale.range      Manually set power color scale mapping                   plot.powerscale.range=-170,-100

Date Range

By default, all available data is displayed. Setting start and end will limit the date range of displayed data. The plot.time.matchrequest parameter sets the behavior of what is plotted when start and/or end are specified. By default, the plot will match given start and end parameters. However, if plot.time.matchrequest=false is specified, the plot will match the available data.

Default behavior: plot.time.matchrequest=true&start=1970-01-01&end=2030-02-01
Match data: plot.time.matchrequest=false&start=1970-01-01&end=2030-02-01

Frequency Range

By default, the frequency axis will default to range of the available data. The plot.frequency.range parameter makes it possible to make this range fixed. This can be useful when comparing plots between channels that have differing sample rates.

Example: plot.frequency.range=0.001,100

Power Range

The power levels of the data are mapped into a color rainbow. The process of power range selection determine how this is done. Powers which are outside of the power range are ‘clipped’ to the extreme values of the range.

There are two ways to determine the power range represented by the color rainbow.

  1. plot.powerscale.range
  2. plot.powerscale.autorange

plot.powerscale.range allows the user to manually determine the mapped color range. This can be useful when comparing plots from different channels.

Example: plot.powerscale.range=-185,-115

plot.powerscale.autorange chooses minimum and maximum power levels based on percentile occurrences.

For example, if plot.powerscale.autorange=0.9 is selected, the minimum power will be the lowest 5% power and the maximum power will be the highest 95% power. Another way of thinking about this is that 90% of the power data will map one-to-one to a color values while 10% will saturate to the end of the color scale; 5% will saturate to the bottom of the scale and 5% will saturate to the top of the scale.

Example: plot.powerscale.autorange=0.9

Using plot.powerscale.autorange=1.0 will cause the full range of the data to be displayed. However, because there are often outliers (often caused by anomalous instrument response near the Nyquist frequency) using a value of 1 will usually result in a washed out appearance.

Compare the previous plot with the full range: plot.powerscale.autorange=1

If neither plot.powerscale.range or plot.powerscale.autorange are specified, plot.powerscale.autorange=0.95 is automatically selected.

Plot Customization

26 options allow for customizing plot appearance.

Orientation and Size

plot.horzaxis controls the plot orientation while plot.height and plot.width control the plot size. By default the horizontal axis is time and the width and height are 1000 and 500 pixels respectively. If plot.horzaxis=freq is selected the horizontal axis will be frequency and, if height and width are not selected, they will default to 500 and 1000 pixels respectively.

Example: Horizontal Axis Frequency – plot.horzaxis=freq

Example: Horizontal Axis Time – plot.horzaxis=time

By default, there is a 2:1 or 1:2 ratio between height and width depending on orientation. So, for example, if the horizontal axis is time, and a width of 1500 is specified and the height is unspecified, the height will be 750 pixels. Example plot.width=1500

plot.time.invert and plot.frequency.invert parameters control direction of the time and frequency axes. Normally, time and frequency increase bottom to top and left to right. Setting plot.time.invert=true or plot.frequency.invert=true will reverse this order.

Example: plot.time.invert=true&plot.frequency.invert=true

Title and Axis Label Customization

plot.title, plot.subtitle, plot.time.label and plot.frequency.label options allow for customizing the plot titles and labels.

All of these options will accept the string ‘hide’ which will hide the label or title. They also accept predefined substitution string listed in the table below.

Parameters and defaults:

Parameter:             Description:               Default:          
plot.title             Title at top of plot       TARGET           
plot.subtitle          Title under subtitle       hide             
plot.time.label        Title of time axis         DATERANGE        
plot.frequency.label   Title of frequency axis    "Frequency (Hz)" 

String substitutions:

String:         Example Outputs:     
TARGET          IU.ANMO.00.BHZ.M         
NETWORK         IU                       
STATION         ANMO                     
LOCATION        00                       
CHANNEL         BHZ                      
STARTDATE       2010-01-02               
ENDDATE         2010-08-23               
DATERANGE       2010-01-02 to 2010-08-23 
FREQMIN         0.001                    
FREQMAX         5.5                      
FREQRANGE       0.001 to 5.5             
POWMIN          -180                     
POWMAX          -110                     
POWRANGE        -180 to -110             

The substitution strings can be combined with regular strings as illustrated in the following example.


Customized titles

Tip: When setting the titles and labels, the + character or the sequence %20 can be used for white spaces. The sequence %0A can be used for carriage-return. See Percent-encoding: Wikipedia for more information.

Date Format Customization

plot.time.format and plot.time.tickunit parameters control the display of dates and tickunit spacing. If these parameters are not specified, the underlying plotting library will choose how to space the tick marks and how to display the dates corresponding to tick marks. This mostly yields plots with good appearance, but sometimes directly controlling the appearance is better.

This is illustrated in the following example.


Customized dates

Date Format Patterns

Letter   Date Component   Example
y        Year             yyyy: 2016
M        Month in year    MM: 07, MMM: Jul, MMMM: July
d        Day in month     dd: 21
D        Day in year      DDD: 026   

Font Sizes

plot.titlefont.size, plot.subtitlefont.size, plot.axisfont.size and plot.labelfont.size can be used to manually set the font sizes of the labels and titles.

Example: &plot.titlefont.size=15&plot.axisfont.size=12&plot.labelfont.size=18

Color Mapping

The color coded format used to display the data from the daily PDF mode values can be specified with plot.color.palette option. This parameter defines the range and scale of colors used in the colormap to which power levels are rendered.

7 different color palettes are offered:
rainbow cpt-city|ds9|rainbow (David Ljung Madison Stellar))

RdYlBu, BrBG, RdBu, YlGnBu, OrRd (ColorBrewer 2.0 (Brewer, et al))

viridis (Matplotlib Colormaps (Smith, et al.))

Palette:   Color Range:          Color scale:     Colorblind-friendly?    Printer-friendly?     Grayscale-compatible?
rainbow    spectral              diverging        no                      no                    no
RdYlBu     red-yellow-blue       diverging        yes                     yes                   no                    
BrBG       brown-bluegreen       diverging        yes                     yes                   no
RdBu       red-blue              diverging        yes                     yes                   no
YlGnBu     yellow-green-blue     sequential       yes                     yes                   no
viridis    blue-green-yellow     sequential       yes                     no                    yes
OrRd       orange-red            sequential       yes                     yes                   yes

By default, plot.color.palette=rainbow is used. Colorblind-safe, grayscale-compatible, and printer-friendly options are also available.

plot.color.invert=true will reverse the color order of the palette.

Example: plot.color.palette=RdYlBu


Diverging palettes put equal emphasis on mid-range critical values and the extremes of the power scale; these colors are interpolated across the range with a light color in the middle.

Example: plot.color.palette=RdBu&output=powermedian


Sequential palettes are interpolated across the range of colors from light to dark and are suited for highlighting ordered data that follow a gradient.

Example: plot.color.palette=YlGnBu


Power Scale Placement

The position and size of the power scale is controlled with the following parameters

  • plot.powerscale.height height of the power scale
  • plot.powerscale.width width of the power scale including text
  • plot.powerscale.x horizontal position of power scale
  • plot.powerscale.y vertical position of power scale
  • plot.powerscale.orientation either vertical or horizontal
  • controls whether the power scale is drawn

The default width and height of the power scale are 150 × 12. As the width is increased, the font size of the power scale also increases.

Example: plot.powerscale.width=300&plot.powerscale.height=20

The x and y offsets are relative to the left and top image edges. If negative values are used the offsets are relative to the right and bottom image edges. The default values are 5 and 5.

Example: plot.powerscale.x=-5&plot.powerscale.y=7

plot.powerscale.orientation determines whether the power scale is drawn horizontally (default) or vertically.

Example: plot.powerscale.orientation=vert

Noise Model Comparison

The output and noisemodel.byperiod and noisemodel.byfrequency options allow the mode power levels to be compared to noise models as well as channel median daily mode values for the selected time ranges.

The web service contains default high and low noise models derived from tables 3 and 4 in Observations and Modeling of Seismic Background Noise by Jon Peterson, 1993.

The default noise models can be view from the link /defaultnoisemodel. Noise models are interpolated using a piecewise log, linear relationship given by:

Noise = A + B Log10(Period)

Noise model levels are interpreted as constant above and below model specifications.

output option

The output option accepts the following three values: power, powerdhnm, powerdlnm and powerdnm

output=power is the default. Output values are simply the mode power levels. (example)

output=powerdmedian Output values are differenced to median values over the time interval. (example)

output=powerdhnm: power values are differenced against the high-noise model. (example)

output=powerdlnm: power values are differenced against the low-noise model. (example)

output=powerdnm: power values are compared to both the high and low noise models. (example)

With output=powerdnm power levels are returned with the following logic:

    if( power > HNM ) 
       return (power - HNM)
    else if ( power < LNM ) 
       return (power - LNM)
       return 0

output=powerdmedian is especially useful for spotting changes in instrument behavior.

noisemodel.byperiod and noisemodel.byfrequency Options

The noisemodel.byperiod and noisemodel.byfrequency options allow for the input of custom noise models.

The noise model parameters accept both high and low noise models or a single noise model. If a single noise model is specified
the output options powerdhnm, powerdlnm, powerdnm will all return the same values.

The noise models should be in the format

High and low models by period:


Single model by period:


High and low models by frequency:


Single model by frequency:


For high/low models (two values per frequency or period) the order of the value pairs is not important; greater values are assigned to the high noise model and lower values are assigned to the low noise model. The order of frequencies (or periods) is not important; however, there should be no duplicates.

The character sequence %7C can be used in place of the | (pipe) character in URLs.




Wikipedia: Percent-encoding

Ambient Noise levels in the Continental United States by Daniel E. McNamara and Raymond P. Buland

Observations and Modeling of Seismic Background Noise by Jon Peterson, 1993.

ColorBrewer 2.0 by Cynthia Brewer, et al.

Matplotlib Colormaps by Nathaniel J. Smith, Stefan van der Walt, and Eric Firing

cpt-city|ds9|rainbow by David Ljung Madison Stellar

Technical Note: Colour Schemes by Paul Tol, 28 September 2018.

Problems with this service?

Please send an email report of which service you were using, your URL query, and any error feedback to:
[email protected]
We will address your issue as soon as possible.