如何在不重复代码的情况下对多条回归线进行分层?

how to layer multiple regression lines without repeating code?

我正在使用 Vega Lite 绘制我吃饭的时间图表,并想要一条回归(黄土)线来显示每顿饭的一般时间。默认情况下,回归使用整个数据集并且只显示一行;我要三行,每餐一行(存储在字段extra_data.content)。

我已经实现了我想做的事情,我将黄土层重复三次 (screenshot),但我正在尝试找到一种解决方案,在该解决方案中,同一层只写一次,然后自己重​​复三次。

解决后编辑!非常感谢@jakevdp的解答!这是我的工作代码;注意黄土上既有groupby,又有color渠道

        {
            "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"
                }
            }
        }

听起来您想要黄土变换的 groupby 参数以及颜色编码。它可能看起来像这样:

{
  "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"
    }
  }
}