Description
Changelog
Reviews (0)

TauPlot

TauPlot is a pure GDScript charting addon for Godot 4.5+ with no external dependencies. It draws interactive, performant and themeable plots inside any Godot UI.

Features

  • Bar, line, and scatter overlays in any combination. Bars can be grouped, stacked, or independent, lines can be independent or stacked, both support optional normalization, and a line can carry a flat or textured area fill.
  • Axes can be categorical or continuous, linear or logarithmic, inverted, and placed on any edge. A pane can carry two Y axes with optional alignment at zero, and a secondary X axis shows the same range in another unit through a custom transform.
  • Automatic tick and label generation with overlap prevention. Ticks and labels adapt to the available space so they stay readable at any size, with no manual tuning required. The preferred tick count, overlap strategy, and minimum spacing are configurable, and the axis domain can be overridden with a fixed range when needed.
  • Real-time streaming through ring-buffer datasets that drop the oldest samples automatically.
  • Multi-pane layouts for displaying series with different Y scales (for example, price above volume).
  • Per-sample styling via attribute buffers or callbacks for color, alpha, marker shape, and more.
  • Full Godot theme integration with a three-layer cascade (built-in defaults, theme, code overrides) across every visual property.
  • Hover inspection with tooltip, crosshair, highlight, and interaction signals.

Quick start

Create a scene where the root node is a CenterContainer. Add a TauPlot node child and name it MyPlot. Attach a script to the root node with the following content:

extends CenterContainer

func _ready() -> void:
    var dataset := TauPlot.Dataset.make_shared_x_categorical(
        PackedStringArray(["Revenue", "Costs"]),
        PackedStringArray(["Q1", "Q2", "Q3", "Q4"]),
        [
            PackedFloat64Array([120.0, 135.0, 148.0, 160.0]),
            PackedFloat64Array([90.0, 95.0, 100.0, 108.0]),
        ]
    )

    var x_axis := TauAxisConfig.new()
    x_axis.type = TauAxisConfig.Type.CATEGORICAL

    var y_axis := TauAxisConfig.new()
    y_axis.title = "EUR"

    var bar_overlay_config := TauBarConfig.new()

    var pane := TauPaneConfig.new()
    pane.y_left_axis = y_axis
    pane.overlays = [bar_overlay_config]

    var config := TauXYConfig.new()
    config.x_axis = x_axis
    config.panes = [pane]

    var b0 := TauXYSeriesBinding.new()
    b0.series_id = dataset.get_series_id_by_index(0)
    b0.pane_index = 0
    b0.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR
    b0.y_axis_id = TauPlot.AxisId.LEFT

    var b1 := TauXYSeriesBinding.new()
    b1.series_id = dataset.get_series_id_by_index(1)
    b1.pane_index = 0
    b1.overlay_type = TauXYSeriesBinding.PaneOverlayType.BAR
    b1.y_axis_id = TauPlot.AxisId.LEFT

    var bindings: Array[TauXYSeriesBinding] = [b0, b1]

    $MyPlot.title = "Quick Start Example"
    $MyPlot.plot_xy(dataset, config, bindings)

Run the scene and you get:

Quick start

A complete, runnable version of this example is available here.

Documentation

  • Getting Started walks through building your first plot step by step.
  • API Reference covers every class, property, enum, and signal.
  • Runtime Configuration Change Limitations lists the configuration properties that can be changed after the plot is built.
  • demo_1.gd is an advanced example with nine plots showing theme customization and per-sample styling through attribute buffers and callbacks.
  • demo_2.gd is an advanced example with three plots showing line overlays with textured area fills, a real-time sweep, and a multi-pane layout.
  • Tests can provide good examples of how to use some features.

Stability

The API may change between releases until version 1.0 is reached. Breaking changes will be documented in the changelog. Backward compatibility is taken seriously and disruption will be kept to a minimum, but at this stage correctness and design quality take priority over freezing the API.

If you encounter a bug, please open an issue on the GitHub repository. Feedback from early adopters directly shapes the road to a stable 1.0.

Contributing

Contributions are welcome. See CONTRIBUTING.md for details.

Roadmap

The following features are planned for upcoming releases:

  • Interactive legend with click-to-toggle series visibility.
  • Zoom and pan with the mouse wheel and drag.
  • Data labels, showing the value of each sample next to it.
  • Minor tick generation on linear scales.
  • Symmetric logarithmic (symlog) axis scale.
  • Pie and radar plot types.

License

TauPlot is released under the BSD 3-Clause License. See the full license text for details.

Changelog for version tau-plot v0.2.0

No changelog provided for this version.

Reviews

TauPlot has no reviews yet.

Login to write a review.

Consider supporting the creators!

If you enjoyed this asset consider supporting its creator. Follow the link below.