'how to layer multiple regression lines without repeating code?

I'm using Vega Lite to chart the times at which I eat my meals, and want a regression (loess) line showing the general time for each. By default, a regression uses the entire dataset and only shows one line; I want three lines, one for each meal (stored in the field extra_data.content).

I've achieved what I want to do my repeating the loess layer three times (screenshot) but am trying to find a solution in which the same layer is written once and repeats itself three times.

Edit after solving! Thanks very much to @jakevdp for the answer! Here is my working code; note that there is both a groupby on the loess and a color channel.

        {
            "mark": "line",
            "transform": [
                {
                    "loess": "hm",
                    "on": "ymd",
                    "groupby": ["extra_data.content"]
                }
            ],
            "encoding": {
                "x": {
                    "field": "ymd",
                    "type": "temporal"
                },
                "y": {
                    "field": "hm",
                    "type": "temporal"
                },
                "color": {
                    "field": "extra_data.content",
                    "type": "nominal"
                }
            }
        }


Solution 1:[1]

It sounds like you want the groupby argument of the loess transform, along with a color encoding. It might look something like this:

{
  "mark": "line",
  "transform": [
    {
      "loess": "hm",
      "on": "ymd",
      "groupby": ["extradata.content"]
    }
  ],
  "encoding": {
    "x": {
      "field": "ymd",
      "type": "temporal"
    },
    "y": {
      "field": "hm",
      "type": "temporal"
    },
    "color": {
      "field": "extradata.content",
      "type": "nominal"
    }
  }
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 jakevdp