Observable Plot

Updated: 21 February 2026

Display an Observable dot plot in a Symfony framework Twig template

{% extends 'secure-area.html.twig' %}
{% block title %}CTD Observable Plot example{% endblock %}
{% block content %}
<div class='container-fluid'>
  <div id="myplot"></div>
  <script type="module">
  import * as Plot from "https://cdn.jsdelivr.net/npm/@observablehq/plot@0.6/+esm";

  const llm_charges = [
    {date: new Date("2026-06-21"), val: 1709.21},
    {date: new Date("2025-09-13"), val: 2114.67},
    {date: new Date("2024-10-17"), val: 979.82},
    {date: new Date("2023-08-07"), val: 1388.13},
  ]

  const plot = Plot.plot({
    width: 1600,
    height: 800,
    x: {
      type: "utc",
      grid: true,
      ticks: "month"
    },
    y: {
      grid: true,
      label: "value / £",
    },
    marks: [
      Plot.dot(llm_charges, {
        x: "date",
        y: "val",
        tip: true,
        fill: "green",
        r: 4,
      }),
      Plot.ruleY([0])
    ]
  })

  const div = document.querySelector("#myplot");
  div.append(plot);
  </script>
</div>
{% endblock %}