Lilaq draws plots inside Typst, in the same typeface as your text
Advanced data visualization with Typst.
At a glance
- What is it?
- Lilaq is a plotting library for Typst that renders line, scatter, bar, contour and mesh plots as part of a document rather than as an imported image. It is published on Typst Universe at version 0.6.0 under the MIT licence, and its strongest argument is typographic fit rather than chart features.
- Who is it for?
- Adopt Lilaq when you write documents in Typst and want figures that share the document's typography, and when your charts are the kind a typesetting engine can render, from line and scatter plots through contours and colour meshes. Do not adopt it as a replacement for an analysis pipeline, since it draws from data you have already computed, and it is still at version 0.6.0.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Typst, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A plotting library that lives inside a typesetting engine
Lilaq is a plotting library for Typst. Typst is a typesetting system, so the interesting part of Lilaq is not that it draws charts, but that it draws them as part of a document.
That has a visible consequence. A figure produced by Lilaq uses the fonts, sizes and colours of the document it sits in, and it flows with the text on the page. A figure exported from a separate plotting program is an image: it has its own font stack, its own margin conventions and its own idea of what a label looks like, and you end up with a chart that is technically correct but visually foreign to the page around it.
The library is written in Typst itself, and the repository layout is small: src for the source, tests for the test suite, and typst.toml, the manifest that defines the package for the Typst ecosystem. The project is MIT licensed and the documentation lives at lilaq.org.
The audience is people who already write in Typst, which is a narrower group than people who plot in Python. For them the comparison is not with other plotting libraries but with the alternative of leaving Typst to make a picture.
The README itself points at the documentation site rather than describing the API at length, and the demo gallery links each image to the documentation page that shows how to build that plot, which is a sensible way to learn a library whose surface is mostly function calls.
Importing the package and drawing the first plot
There is no install step in the usual sense. Lilaq is a Typst package published on Typst Universe, and you pull it into a document with an import under the canonical abbreviation lq:
#import "@preview/lilaq:0.6.0" as lqThe version is part of the import path, so the document states exactly which release of the library it was written against. That is a deliberate property of the Typst package system rather than a quirk of Lilaq, and it means a document that renders today renders the same way later unless someone changes the pinned version.
From there the workflow is the one Typst users expect. You import the package, you build a plot from your data, and you place it in the document where it belongs. The reference section of the documentation is organised by plot type, with separate pages for the line plot, scatter, bar, boxplot, quiver, errorbar, colormesh, contour and colorbar, and the quickstart page covers the first plot.
The tutorials section goes further than plot types. It covers axis handling, including independent axes and twin axes, and there are example pages for styled marks and for bar plots with numbers.
Because everything is Typst code, the data can be anything Typst can compute or read. That is the real integration story: Lilaq does not need a data pipeline, because the document is the pipeline.
The catalogue runs from line plots to contour maps
The demo gallery in the README is the fastest way to see the scope, and it is broader than a first-line chart library.
The basic types are there: a line plot, a scatter plot and a bar chart. Then come the statistical and specialised ones: a boxplot, a quiver plot, error bars, plot smoothing and a stem plot.
The scientific end of the range is what makes this more than a charting helper. A colormesh renders a grid of values with colour, a contour plot draws isolines, and a colour bar provides the legend for both. A spectrum plot with a secondary axis and a climograph with a twin axis are the kind of figure that usually ends up as a separate image in a paper.
There is also a page for styled marks, which covers how the individual data points are drawn, and a bar plot with numbers, which is the small courtesy of printing the value above each bar.
Two of the demos are there for show rather than for work. A plot within a plot demonstrates that a figure can be embedded in another figure, and a Koch snowflake fractal shows the library rendering a self-similar curve. They are also a fair signal about the ambition: this is a plotting library that treats the chart as a drawing rather than as a wrapper around a data structure.
Two axes and independent axes are first class
The axis tutorial is the part of the documentation most worth reading before you start, because axes are where plotting libraries usually compromise.
Several demos are built around the problem of two different scales on one figure. A spectrum with a secondary axis pairs the signal with its frequency axis. A climograph with a twin axis shows a climate diagram with two vertical scales that are independent of each other. And there is a dedicated example for multiple twin axes, which links to the section on independent axes and twin axes in the axis tutorial.
Doing this in a typesetting engine is less obvious than it looks. Axes in Lilaq are drawn as document content, so the ticks, labels and grid lines are positioned by the same layout rules as the surrounding text, and the figure stays consistent with the rest of the page.
The cost of that approach is that the configuration surface is expressed in Typst terms rather than in the vocabulary of a chart configuration object. If you come from a Python plotting library, expect to read the axis tutorial rather than to guess parameter names, and expect the learning curve to sit in the typesetting language rather than in the chart library.
The same point explains why the documentation is organised as reference pages per plot type with tutorials for cross-cutting topics such as axes, rather than as one long parameter list.
The alternative: draw the figure elsewhere and embed it
The realistic alternative is not another Typst package but the workflow most people already use. You compute the data and the chart in a dedicated plotting tool, export it as a PNG or an SVG, and include the file in the Typst document.
The difference in approach is precise. That workflow separates the figure from the document: the chart is produced by a program whose typography, resolution and margins are independent of the page, and the document is left to place a rectangle. Lilaq inverts that. The plot is document content, it inherits the page's type, and it participates in layout, which is what makes a figure fit into a paragraph flow, a table cell or a multi-page appendix without scaling artefacts.
The cost of the inversion is that you give up the plotting library you already know. The chart-specific features of the wider Python and R ecosystems, the statistical helpers and the wide choice of back ends, are not part of Lilaq, and Lilaq does not read your data frames for you. You are drawing from data the document has already computed or imported.
So the decision is about what the figure is. If a figure is an asset in a report, the export and embed route is simpler and produces the same result for most readers. If the figure is part of the document, with the same fonts, the same colour decisions and the same ability to be referenced and restyled, then a plotting library that lives inside the typesetting engine is the better tool.
Version 0.6.0, the Typst Universe release and an MIT licence
The release history is short and the project is moving. Version 0.4.0 was published on 2025-07-07, version 0.5.0 on 2025-09-17 and version 0.6.0 on 2026-03-14, and the last push to the default branch was on 2026-10-17. The repository is not archived.
The version numbers matter more here than in a normal package, because Typst imports a package by exact version, as the import line in the README shows. There is no floating latest that resolves at compile time, so a document pins the release it was built against, and an upgrade is a deliberate edit to that line plus a re-read of the changed pages in the reference.
The package is distributed through Typst Universe, which the badge in the README points at, and the documentation site is the project's own site at lilaq.org rather than a hosted documentation service.
The licence is MIT, and for a typesetting library that is the straightforward choice: you can use it in documents, in templates, in internal tooling and in commercial work, and the only requirement is keeping the copyright and licence notice with the code.
The repository also carries a CONTRIBUTING.md, so the project has a written contribution process, and the presence of a tests directory tells you the plot types are covered by tests rather than only by examples.
Editorial conclusion
Adopt Lilaq when you write documents in Typst and want figures that share the document's typography, and when your charts are the kind a typesetting engine can render, from line and scatter plots through contours and colour meshes. Do not adopt it as a replacement for an analysis pipeline, since it draws from data you have already computed, and it is still at version 0.6.0. Before you rely on it, check the reference pages on lilaq.org for the plot type you need, since the catalogue is the whole feature list, and pin the package version in your import, because Typst packages are imported by exact version, starting at @preview/lilaq:0.6.0.
Frequently asked questions
How do I import Lilaq in a Typst document?
Import the Typst Universe package under the abbreviation lq with #import "@preview/lilaq:0.6.0" as lq. The version is part of the import path, so the document pins the release it was written against.
Which kinds of plot does Lilaq support?
The documentation covers line plots, scatter, bar charts, boxplot, quiver, error bars, stem plots, plot smoothing, styled marks, colormesh, contour and colour bar, with examples for dual axis and multiple twin axes figures.
Can Lilaq draw a second axis on the same figure?
Yes. The documentation includes a spectrum with a secondary axis, a climograph with a twin axis and a dedicated multiple twin axes example, and the axis tutorial explains independent axes and twin axes.
What is the current version of Lilaq and how is it licensed?
Version 0.6.0 was released on 2026-03-14 and is published as a Typst Universe package, with the documentation at lilaq.org. The project is licensed under the MIT licence.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/lilaq-project-lilaq)Was this useful?