title: Vega visualization remove empty cells from filtered matrix
body: <p>I am attempting to craft a vega visualization which presents sub-plots in a matrix and has the capability to filter the rows and/or columns so only a subset are displayed. </p>
  
  <p>When I apply the filter, only the marks which match the filter are being drawn as I would expect, but all of the cells in the matrix are still displayed. The axes respond correctly to the filter as well. </p>
  
  <p>How can I get the cells to update when the filter is applied? </p>
  
  <p><a href="https://i.stack.imgur.com/6R2Fm.png" rel="nofollow noreferrer">Unfiltered Matrix displays correctly</a></p>
  
  <p><a href="https://i.stack.imgur.com/C6B5C.png" rel="nofollow noreferrer">Filtered Matrix has too many cells</a></p>
  
  <p><strong>Sample Visualization</strong><br/>
  Adapted from <a href="https://vega.github.io/vega-lite/examples/trellis_barley.html" rel="nofollow noreferrer">https://vega.github.io/vega-lite/examples/trellis_barley.html</a></p>
  
  <pre><code>{
    "$schema": "https://vega.github.io/schema/vega/v3.0.json",
    "autosize": "pad",
    "padding": 5,
    "data": [
      {
        "name": "source_0",
        "values": [
          {
            "year": 1990,
            "level": 1,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 1990,
            "level": 1,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 1991,
            "level": 2,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 1991,
            "level": 1,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 1992,
            "level": 4,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 1992,
            "level": 3,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 1993,
            "level": 0,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 1993,
            "level": 2,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 1994,
            "level": 0,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 1994,
            "level": 3,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 1995,
            "level": 0,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 1995,
            "level": 0,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 1996,
            "level": 1,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 1996,
            "level": 4,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 1997,
            "level": 1,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 1997,
            "level": 2,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 1998,
            "level": 1,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 1998,
            "level": 0,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 1999,
            "level": 3,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 1999,
            "level": 1,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 2000,
            "level": 4,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 2000,
            "level": 1,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 2001,
            "level": 4,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 2001,
            "level": 1,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 2002,
            "level": 2,
            "region": "Region 1",
            "category": "Category 1"
          },
          {
            "year": 2002,
            "level": 0,
            "region": "Region 1",
            "category": "Category 2"
          },
          {
            "year": 1990,
            "level": 4,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 1990,
            "level": 2,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 1991,
            "level": 3,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 1991,
            "level": 2,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 1992,
            "level": 0,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 1992,
            "level": 2,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 1993,
            "level": 1,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 1993,
            "level": 4,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 1994,
            "level": 2,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 1994,
            "level": 3,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 1995,
            "level": 2,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 1995,
            "level": 0,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 1996,
            "level": 0,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 1996,
            "level": 4,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 1997,
            "level": 3,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 1997,
            "level": 2,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 1998,
            "level": 4,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 1998,
            "level": 0,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 1999,
            "level": 5,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 1999,
            "level": 0,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 2000,
            "level": 2,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 2000,
            "level": 3,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 2001,
            "level": 0,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 2001,
            "level": 2,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 2002,
            "level": 0,
            "region": "Region 2",
            "category": "Category 1"
          },
          {
            "year": 2002,
            "level": 1,
            "region": "Region 2",
            "category": "Category 2"
          },
          {
            "year": 1990,
            "level": 1,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 1990,
            "level": 1,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 1991,
            "level": 2,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 1991,
            "level": 1,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 1992,
            "level": 4,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 1992,
            "level": 3,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 1993,
            "level": 0,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 1993,
            "level": 2,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 1994,
            "level": 0,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 1994,
            "level": 3,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 1995,
            "level": 0,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 1995,
            "level": 0,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 1996,
            "level": 1,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 1996,
            "level": 4,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 1997,
            "level": 1,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 1997,
            "level": 2,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 1998,
            "level": 1,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 1998,
            "level": 0,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 1999,
            "level": 3,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 1999,
            "level": 1,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 2000,
            "level": 4,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 2000,
            "level": 1,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 2001,
            "level": 4,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 2001,
            "level": 1,
            "region": "Region 3",
            "category": "Category 2"
          },
          {
            "year": 2002,
            "level": 2,
            "region": "Region 3",
            "category": "Category 1"
          },
          {
            "year": 2002,
            "level": 0,
            "region": "Region 3",
            "category": "Category 2"
          }
        ],
        "transform": [
          {
            "type": "filter",
            "expr": "(!Category || test(regexp(Category, 'i'), datum.category))"
          },
          {
            "type": "filter",
            "expr": "(!Region || test(regexp(Region, 'i'), datum.region))"
          }
        ]
      },
      {
        "name": "data_0",
        "source": "source_0",
        "transform": [
          {
            "type": "formula",
            "expr": "toNumber(datum[\"year\"])",
            "as": "year"
          }
        ]
      },
      {
        "name": "trellis_barley_column_domain",
        "source": "data_0",
        "transform": [
          {
            "type": "aggregate",
            "groupby": [
              "category"
            ]
          }
        ]
      },
      {
        "name": "trellis_barley_row_domain",
        "source": "data_0",
        "transform": [
          {
            "type": "aggregate",
            "groupby": [
              "region"
            ]
          }
        ]
      },
      {
        "name": "data_2",
        "source": "data_0",
        "transform": [
          {
            "type": "filter",
            "expr": "datum[\"year\"] !== null &amp;&amp; !isNaN(datum[\"year\"])"
          }
        ]
      }
    ],
    "signals": [
      {
        "name": "Region",
        "value": "",
        "bind": {
          "input": "text",
          "placeholder": "search",
          "autocomplete": "off"
        }
      },
      {
        "name": "Category",
        "value": "",
        "bind": {
          "input": "text",
          "placeholder": "search",
          "autocomplete": "off"
        }
      },
      {
        "name": "trellis_barley_child_width",
        "value": 200
      },
      {
        "name": "trellis_barley_y_step",
        "value": 40
      },
      {
        "name": "trellis_barley_child_height",
        "update": "bandspace(domain('trellis_barley_y').length, 1, 0.5) * trellis_barley_y_step"
      }
    ],
    "layout": {
      "padding": {
        "row": 10,
        "column": 10
      },
      "offset": 10,
      "columns": {
        "signal": "length(data('trellis_barley_column_domain'))"
      },
      "bounds": "full",
      "align": "all"
    },
    "marks": [
      {
        "name": "trellis_barley_row_title",
        "role": "row-title",
        "type": "group",
        "marks": [
          {
            "type": "text",
            "role": "row-title-text",
            "style": "guide-title",
            "encode": {
              "update": {
                "align": {
                  "value": "center"
                },
                "text": {
                  "value": "region"
                },
                "angle": {
                  "value": 270
                }
              }
            }
          }
        ]
      },
      {
        "name": "trellis_barley_column_title",
        "role": "column-title",
        "type": "group",
        "marks": [
          {
            "type": "text",
            "role": "column-title-text",
            "style": "guide-title",
            "encode": {
              "update": {
                "align": {
                  "value": "center"
                },
                "text": {
                  "value": "category"
                }
              }
            }
          }
        ]
      },
      {
        "name": "trellis_barley_row_header",
        "type": "group",
        "role": "row-header",
        "from": {
          "data": "trellis_barley_row_domain"
        },
        "sort": {
          "field": "datum[\"region\"]",
          "order": "ascending"
        },
        "title": {
          "text": {
            "signal": "''+parent[\"region\"]"
          },
          "offset": 10,
          "orient": "left",
          "style": "guide-label"
        },
        "encode": {
          "update": {
            "height": {
              "signal": "trellis_barley_child_height"
            }
          }
        },
        "axes": [
          {
            "scale": "trellis_barley_y",
            "orient": "left",
            "title": "level",
            "labelOverlap": true,
            "zindex": 1
          }
        ]
      },
      {
        "name": "trellis_barley_column_header",
        "type": "group",
        "role": "column-header",
        "from": {
          "data": "trellis_barley_column_domain"
        },
        "sort": {
          "field": "datum[\"category\"]",
          "order": "ascending"
        },
        "title": {
          "text": {
            "signal": "''+parent[\"category\"]"
          },
          "offset": 10,
          "orient": "top",
          "style": "guide-label"
        },
        "encode": {
          "update": {
            "width": {
              "signal": "trellis_barley_child_width"
            }
          }
        }
      },
      {
        "name": "trellis_barley_column_footer",
        "type": "group",
        "role": "column-footer",
        "from": {
          "data": "trellis_barley_column_domain"
        },
        "sort": {
          "field": "datum[\"category\"]",
          "order": "ascending"
        },
        "encode": {
          "update": {
            "width": {
              "signal": "trellis_barley_child_width"
            }
          }
        },
        "axes": [
          {
            "scale": "trellis_barley_x",
            "orient": "bottom",
            "title": "year",
            "labelFlush": true,
            "labelOverlap": true,
            "tickCount": {
              "signal": "ceil(trellis_barley_child_width/40)"
            },
            "zindex": 1
          }
        ]
      },
      {
        "name": "trellis_barley_cell",
        "type": "group",
        "style": "cell",
        "from": {
          "facet": {
            "name": "trellis_barley_facet",
            "data": "data_0",
            "groupby": [
              "region",
              "category"
            ],
            "aggregate": {
              "cross": true
            }
          }
        },
        "sort": {
          "field": [
            "datum[\"region\"]",
            "datum[\"category\"]"
          ],
          "order": [
            "ascending",
            "ascending"
          ]
        },
        "data": [
          {
            "source": "trellis_barley_facet",
            "name": "data_0",
            "transform": [
              {
                "type": "filter",
                "expr": "datum[\"year\"] !== null &amp;&amp; !isNaN(datum[\"year\"])"
              }
            ]
          }
        ],
        "encode": {
          "update": {
            "width": {
              "signal": "trellis_barley_child_width"
            },
            "height": {
              "signal": "trellis_barley_child_height"
            }
          }
        },
        "marks": [
          {
            "name": "trellis_barley_child_pathgroup",
            "type": "group",
            "from": {
              "facet": {
                "name": "faceted_path_trellis_barley_child_main",
                "data": "data_0",
                "groupby": [
                  "region"
                ]
              }
            },
            "encode": {
              "update": {
                "width": {
                  "field": {
                    "group": "width"
                  }
                },
                "height": {
                  "field": {
                    "group": "height"
                  }
                }
              }
            },
            "marks": [
              {
                "name": "trellis_barley_child_marks",
                "type": "line",
                "style": [
                  "line"
                ],
                "sort": {
                  "field": "datum[\"year\"]",
                  "order": "descending"
                },
                "from": {
                  "data": "faceted_path_trellis_barley_child_main"
                },
                "encode": {
                  "update": {
                    "stroke": {
                      "scale": "trellis_barley_color",
                      "field": "region"
                    },
                    "x": {
                      "scale": "trellis_barley_x",
                      "field": "year"
                    },
                    "y": {
                      "scale": "trellis_barley_y",
                      "field": "level"
                    }
                  }
                }
              }
            ]
          }
        ],
        "axes": [
          {
            "scale": "trellis_barley_x",
            "orient": "bottom",
            "grid": true,
            "tickCount": {
              "signal": "ceil(trellis_barley_child_width/40)"
            },
            "gridScale": "trellis_barley_y",
            "domain": false,
            "labels": false,
            "maxExtent": 0,
            "minExtent": 0,
            "ticks": false,
            "zindex": 0
          }
        ]
      }
    ],
    "scales": [
      {
        "name": "trellis_barley_x",
        "type": "linear",
        "domain": {
          "data": "data_2",
          "field": "year"
        },
        "range": [
          0,
          {
            "signal": "trellis_barley_child_width"
          }
        ],
        "zero": false,
        "nice": true
      },
      {
        "name": "trellis_barley_y",
        "type": "point",
        "domain": {
          "data": "data_0",
          "field": "level",
          "sort": {
            "field": "year",
            "op": "median",
            "order": "descending"
          }
        },
        "range": {
          "step": {
            "signal": "trellis_barley_y_step"
          }
        },
        "padding": 0.5
      },
      {
        "name": "trellis_barley_color",
        "type": "ordinal",
        "domain": {
          "data": "data_2",
          "field": "region",
          "sort": true
        },
        "range": "category"
      }
    ],
    "legends": [
      {
        "stroke": "trellis_barley_color",
        "title": "region"
      }
    ],
    "config": {
      "axisY": {
        "minExtent": 30
      }
    }
  }
  </code></pre>