Graphic is a grammar of data visualization and Flutter charting library.
  • Flexible declarative grammar: This visualization grammar derives from Leland Wilkinson's The Grammar of Graphics, and tries to balance between theoretical beauty and practicability. Data processing steps and mark shapes can be composed freely in a declarative specification, not limited to certain chart types. And shape draw methods are customizable.
  • Interaction: With the event and selection definition, the chart is highly interactive, such as highlighting selected items, popping a tooltip, or scaling the coordinate.
  • Animation: Mark transition animation can be set when a chart is built or changed. The entrance animation has various forms.

What's new in v2.0

  • Add feature of transition animation, see details in Mark.transition. And thus the rendering engine is rewrited. The imperative Figure classes are changed to declarative MarkElement classes. See details in this folder:

  • Update terminology to keep same with modern mainstream data visualization libraries. Some class names have changed:

    GeomElement -> Mark

    Attr -> Encode

    Signal -> Event

    Channel -> Stream

    Figure -> MarkElement

    And thus some properties related are also changed, like elements -> marks.


See in the documentation.


Example of charts can be seen in the Example App. Please clone this repository and run the example project in example directory.



The Versatility of the Grammar of Graphics

How to Build Interactive Charts in Flutter

Share this Lib

Twitter HackerNews Reddit


Graphic is MIT License.

Keep Informed





Graphic provides a Flutter charting library for data visualization. it has a chart widget, classes for specification, and some util classes and funtions for customization.