diff --git a/doc/source/graph-run_failure_rate.png b/doc/source/graph-run_failure_rate.png
new file mode 100644
index 0000000..c603c2f
Binary files /dev/null and b/doc/source/graph-run_failure_rate.png differ
diff --git a/doc/source/graph.rst b/doc/source/graph.rst
index ea41b21..306d173 100644
--- a/doc/source/graph.rst
+++ b/doc/source/graph.rst
@@ -158,6 +158,28 @@ for a given run_metadata key to make the graph useful. To workaround this you
 specify a list of values that will be used to filter the output so that only
 matches of that key will be in the output.
 
+
+Run Failure Rate Grouped By Run Metadata
+----------------------------------------
+
+This graph generates a bar chart to show the failure rates for all runs for
+with a run_metadata value for a user provided run_metadata key.
+
+For example, running something like::
+
+  subunit2sql-graph --title "Failure Ratess by Job Name" --database-connection mysqll://test:test@localhost/subunit2sql -o test.png run_failure_rate build_name --filter_list gate-tempest-dsvm-neutron-full-ssh,gate-tempest-dsvm-full-ubuntu-xenial,gate-tempest-dsvm-full-ubuntu-trusty,gate-tempest-dsvm-py35-ubuntu-xenial
+
+will generate a graph like:
+
+.. image:: graph-run_failure_rate.png
+   :width: 115%
+
+It's also worth noting the --filter_list argument used in the command above.
+In some cases, especially larger data sets, there are too many distinct values
+for a given run_metadata key to make the graph useful. To workaround this you
+specify a list of values that will be used to filter the output so that only
+matches of that key will be in the output.
+
 subunit2sql-graph plugin interface
 ==================================
 
diff --git a/subunit2sql/analysis/run_failure_rate.py b/subunit2sql/analysis/run_failure_rate.py
index b07ec5b..e6ed9bf 100644
--- a/subunit2sql/analysis/run_failure_rate.py
+++ b/subunit2sql/analysis/run_failure_rate.py
@@ -26,10 +26,16 @@ matplotlib.style.use('ggplot')
 def set_cli_opts(parser):
     parser.add_argument('metadata_key',
                         help="The run_metadata key to group the runs by")
+    parser.add_argument('--filter_list', '-f',
+                        help='A comma seperated list of values to use')
 
 
 def generate_series():
     session = api.get_session()
+    if CONF.command.filter_list:
+        filter_list = CONF.command.filter_list.split(',')
+    else:
+        filter_list = []
     if CONF.start_date:
         start_date = datetime.datetime.strptime(CONF.start_date, '%Y-%m-%d')
     else:
@@ -45,6 +51,8 @@ def generate_series():
 
     perc_data = {}
     for key in run_status:
+        if key not in filter_list:
+            continue
         if run_status[key].get('pass'):
             pass_num = float(run_status[key]['pass'])
         else: