diff --git a/core/API/DataTableGenericFilter.php b/core/API/DataTableGenericFilter.php
index d7cacc0c2040eee4ace7bad011641050000901dc..111453520c87984b502f944f2af0d1c002c7ce48 100644
--- a/core/API/DataTableGenericFilter.php
+++ b/core/API/DataTableGenericFilter.php
@@ -82,14 +82,14 @@ class DataTableGenericFilter
                     'filter_sort_column' => array('string'),
                     'filter_sort_order'  => array('string', 'desc'),
                 ),
+                'Truncate'                       => array(
+                    'filter_truncate' => array('integer'),
+                ),
                 'Limit'                          => array(
                     'filter_offset'    => array('integer', '0'),
                     'filter_limit'     => array('integer'),
                     'keep_summary_row' => array('integer', '0'),
                 ),
-                'Truncate'                       => array(
-                    'filter_truncate' => array('integer'),
-                ),
             );
         }
 
diff --git a/plugins/TreemapVisualization/API.php b/plugins/TreemapVisualization/API.php
index d7f080ab226b5179416b6a47afa6a5dd332e21af..0ddc2e3af1e189ad6b9e5a4ccfa0b8e7df5a1ce5 100644
--- a/plugins/TreemapVisualization/API.php
+++ b/plugins/TreemapVisualization/API.php
@@ -40,7 +40,7 @@ class API
      * @param int|bool $show_evolution_values Whether to calculate evolution values for each row or not.
      * @return array
      */
-    public function getTreemapData($apiMethod, $column, $period, $date, $show_evolution_values = false)
+    public function getTreemapData($apiMethod, $column, $period, $date, $truncateAfter = false, $show_evolution_values = false)
     {
         if ($period == 'range') {
             $show_evolution_values = false;
@@ -65,6 +65,12 @@ class API
         if ($show_evolution_values) {
             $generator->showEvolutionValues();
         }
+
+        $truncateAfter = (int)$truncateAfter;
+        if ($truncateAfter > 0) {
+            $generator->setTruncateAfter($truncateAfter);
+        }
+        
         return $generator->generate($dataTable);
     }
 }
\ No newline at end of file
diff --git a/plugins/TreemapVisualization/Treemap.php b/plugins/TreemapVisualization/Treemap.php
index f86c5bd2b34f484393e6d72ec5a7320211215e86..601408da1d29799af1804f6458b1b167682aa189 100644
--- a/plugins/TreemapVisualization/Treemap.php
+++ b/plugins/TreemapVisualization/Treemap.php
@@ -134,6 +134,11 @@ class Treemap extends Graph
             $generator->showEvolutionValues();
         }
 
+        $truncateAfter = Common::getRequestVar('truncateAfter', false, 'int');
+        if ($truncateAfter > 0) {
+            $generator->setTruncateAfter($truncateAfter);
+        }
+
         return Common::json_encode($generator->generate($dataTable));
     }
 
diff --git a/plugins/TreemapVisualization/TreemapDataGenerator.php b/plugins/TreemapVisualization/TreemapDataGenerator.php
index 1eee7ab53c972d5c5ae17250b228cc7ccc539925..602be755c81e70042aaf0124cc3bc4f978e5f318 100644
--- a/plugins/TreemapVisualization/TreemapDataGenerator.php
+++ b/plugins/TreemapVisualization/TreemapDataGenerator.php
@@ -64,6 +64,14 @@ class TreemapDataGenerator
      */
     private $showEvolutionValues = false;
 
+    /**
+     * The row offset to apply an additional truncation to (the first truncation occurs in
+     * DataTableGenericFilter).
+     * 
+     * @var int
+     */
+    private $truncateAfter = false;
+
     /**
      * Constructor.
      * 
@@ -104,6 +112,16 @@ class TreemapDataGenerator
         $this->showEvolutionValues = true;
     }
 
+    /**
+     * Sets the row offset to apply additional truncation after.
+     * 
+     * @param int $truncateAfter
+     */
+    public function setTruncateAfter($truncateAfter)
+    {
+        $this->truncateAfter = $truncateAfter;
+    }
+
     /**
      * Generates an array that can be encoded as JSON and used w/ the JavaScript Infovis Toolkit.
      * 
@@ -112,6 +130,11 @@ class TreemapDataGenerator
      */
     public function generate($dataTable)
     {
+        // handle extra truncation
+        if ($this->truncateAfter) {
+            $dataTable->filter('Truncate', array($this->truncateAfter));
+        }
+
         // if showEvolutionValues is true, $dataTable must be a DataTable\Map w/ two child tables
         $pastData = false;
         if ($this->showEvolutionValues) {
diff --git a/plugins/TreemapVisualization/javascripts/treemapViz.js b/plugins/TreemapVisualization/javascripts/treemapViz.js
index 42a59063145bea91e50975b7964fba89d8239d6b..30329b56d8bdcc44e534e7b6ae7c1b06bc6d8222 100644
--- a/plugins/TreemapVisualization/javascripts/treemapViz.js
+++ b/plugins/TreemapVisualization/javascripts/treemapViz.js
@@ -430,7 +430,7 @@
                     apiMethod: this.param.module + '.' + this.param.action, // TODO: will this work for all subtables?
                     format: 'json',
                     column: this.param.columns,
-                    filter_truncate: this.props.max_graph_elements - 1,
+                    truncateAfter: this.props.max_graph_elements - 1,
                     filter_limit: -1,
                     expanded: 1,
                     depth: this.props.depth || 1,