Forum Discussion

jonespossibly's avatar
jonespossibly
Icon for Advocate I rankAdvocate I
4 years ago

Deneb Vega-lite trend line based on aggregated mark

I've got a line chart in which i have a line that is aggregated by sum. I have a trend line based on regression which works fine for the none-aggregated data, but i would like it to show a trend line based on the points given by the aggregate.

here is my vega-lite specification - can someone help me out?:

  "data": {"name": "dataset"},
  "layer": [
    {
      "mark": {"type": "line"},
      "encoding": {
        "y": {
          "field": "Weekly Avg"
        },
        "color": {
          "field": "Loan Type",
          "scale": {
            "range": [
              "#4795CA",
              "#F9B96A",
              "#779E41",
              "#F54f0F",
              "#cfcfcf"
            ]
          }
        }
      }
    },
    {
      "mark": {"type": "line"},
      "encoding": {
        "y": {
          "field": "Weekly Avg",
          "aggregate": "sum"
        },
        "color": {"datum": "Total"}
      }
    },
    {
      "mark": {
        "type": "line",
        "strokeDash": [5, 5]
      },
      "transform": [
        {
          "regression": "Weekly Avg",
          "on": "W / C",
          "groupBy": "W / C"
        
        }
      ],
      "encoding": {
        "y": {
          "field": "Weekly Avg"
        },
        "color": {"datum": "Trend"}
      }
    }
  ],
  "encoding": {
    "x": {
      "field": "W / C",
      "timeUnit": "monthdateyear",
      "type": "ordinal",
      "axis": {"format": "%d/%m/%Y"}
    },
    "y": {
      "type": "quantitative",
      "axis": {"format": "~s"}
    }
  }
}

 #deneb #vega-lite

2 Replies

    • jonespossibly's avatar
      jonespossibly
      Icon for Advocate I rankAdvocate I

      ok, so I've set up test data and specification below - how do i base the trend line on the total?

      {
        "data": {"values":[
       {
         "Weekly Avg": "2",
         "Type": "a",
         "WC": "2022-01-01 00:00:00"
       },
       {
         "Weekly Avg": "4",
         "Type": "b",
         "WC": "2022-01-01 00:00:00"
       },
       {
         "Weekly Avg": "23",
         "Type": "c",
         "WC": "2022-01-01 00:00:00"
       },
       {
         "Weekly Avg": "28",
         "Type": "a",
         "WC": "2022-01-08 00:00:00"
       },
       {
         "Weekly Avg": "22",
         "Type": "b",
         "WC": "2022-01-08 00:00:00"
       },
       {
         "Weekly Avg": "25",
         "Type": "c",
         "WC": "2022-01-08 00:00:00"
       },
       {
         "Weekly Avg": "42",
         "Type": "a",
         "WC": "2022-01-15 00:00:00"
       },
       {
         "Weekly Avg": "21",
         "Type": "b",
         "WC": "2022-01-15 00:00:00"
       },
       {
         "Weekly Avg": "17",
         "Type": "c",
         "WC": "2022-01-15 00:00:00"
       },
       {
         "Weekly Avg": "42",
         "Type": "a",
         "WC": "2022-01-22 00:00:00"
       },
       {
         "Weekly Avg": "11",
         "Type": "b",
         "WC": "2022-01-22 00:00:00"
       },
       {
         "Weekly Avg": "27",
         "Type": "c",
         "WC": "2022-01-22 00:00:00"
       },
       {
         "Weekly Avg": "22",
         "Type": "a",
         "WC": "2022-01-29 00:00:00"
       },
       {
         "Weekly Avg": "11",
         "Type": "b",
         "WC": "2022-01-29 00:00:00"
       },
       {
         "Weekly Avg": "13",
         "Type": "c",
         "WC": "2022-01-29 00:00:00"
       }
      ]},
        "layer": [
          {
            "mark": {"type": "line"},
            "encoding": {
              "y": {"field": "Weekly Avg"},
              "color": {
                "field": "Type",
                "scale": {
                  "range": [
                    "#4795CA",
                    "#F9B96A",
                    "#779E41",
                    "#F54f0F",
                    "#cfcfcf"
                  ]
                }
              }
            }
          },
          {
            "mark": {"type": "line"},
            "encoding": {
              "y": {
                "field": "Weekly Avg",
                "aggregate": "sum"
              },
              "color": {"datum": "Total"}
            }
          },
          {
            "mark": {
              "type": "line",
              "strokeDash": [5, 5]
            },
            "transform": [
              {
                "regression": "Weekly Avg",
                "on": "WC",
                "groupBy": "WC"
              }
            ],
            "encoding": {
              "y": {
                "field": "Weekly Avg"
              },
              "color": {"datum": "Trend"}
            }
          }
        ],
        "encoding": {
          "x": {
            "field": "WC",
            "timeUnit": "monthdateyear",
            "type": "ordinal",
            "axis": {"format": "%d/%m/%Y"}
          },
          "y": {
            "type": "quantitative",
            "axis": {"format": "~s"}
          }
        }
      }