Skip to main content
Version: 1.0.0

Creating a Faceted Chart

What is faceting?

Faceting is used to visualize subsets of data split by one or more dimensions. In Muze, when you add dimensions in rows / columns it splits the data by the dimensions and creates small multiples of the charts for each of those subsets of data.

Creating a row faceted crosstab

Adding more than one dimensions or dimensions with measures in rows creates a row faceted crosstab chart.

....
   muze.canvas().rows(['Region', 'Category']);
....
const { muze, getDataFromSearchQuery, env } = viz;
const data = getDataFromSearchQuery();

muze
  .canvas()
  .rows(["Region", "Category"])
  .columns([["Sales"]])
  .data(data)
  .config({
    showHeaders: true,
    axes: {
      y: {
        showAxisName: false,
      },
      x: {
        tickFormat: (d) => {
          const val = d.rawValue;
          if (val < 1000) return `${val}`;
          if (val > 1000 && val < 1000000) return `${val / 1000}K`;
          if (val > 1000000) return `${val / 1000}M`;
          return d;
        },
      },
    },
  })
  .title("Visual Crosstab")
  .subtitle("Sales by Region and Category")
  .mount("#chart");

Creating a column faceted crosstab

Adding more than one dimensions in columns will create a column faceted crosstab.

muze.canvas().columns(["Region", "Category"]);
const { muze, getDataFromSearchQuery, env } = viz;
const data = getDataFromSearchQuery();

muze
  .canvas()
  .columns(["Region", "Category"])
  .rows([["Sales"]])
  .data(data)
  .config({
    axes: {
      x: {
        showAxisName: true,
      },
      y: {
        tickFormat: (d) => {
          const val = d.rawValue;
          if (val < 1000) return `${val}`;
          if (val > 1000 && val < 1000000) return `${val / 1000}K`;
          if (val > 1000000) return `${val / 1000}M`;
          return d;
        },
      },
    },
  })
  .title("Visual Crosstab")
  .subtitle("Sales by Region and Category")
  .mount("#chart");

Crosstab using both rows and columns

Adding dimensions in both rows and columns also creates a crosstab.

For example, here in this example, we have faceted by Product Type in rows and Market in columns.

muze.canvas().columns(["Market", "Product"]).rows(["Product Type", "Revenue"]);
const { muze, getDataFromSearchQuery, env } = viz;
const data = getDataFromSearchQuery();

muze
  .canvas()
  .columns(["Region", "Segment"])
  .rows([["Category", "Sales"]])
  .data(data)
  .config({
    showHeaders: true,
    axes: {
      y: {
        showAxisName: false,
      },

      x: {
        tickFormat: (d) => {
          const val = d.rawValue;
          if (val < 1000) return `${val}`;
          if (val > 1000 && val < 1000000) return `${val / 1000}K`;
          if (val > 1000000) return `${val / 1000}M`;
          return d;
        },
      },
    },
  })
  .title("Visual Crosstab")
  .subtitle("Sales by Segment and Region for each Category")
  .mount("#chart");