Docs & Rules

Live-Charts/LiveCharts2GitHubLast refreshed Oct 3, 2026

This is a public, read-only report. Striff reads this repository's docs, turns each sentence that makes a claim about the code into a rule, and checks the rule against the code on the default branch. How this works

2 names in these docs no longer match the code.

master8537b90listed 4h ago

Is this yours? Install to manage it

Once installed, Striff checks every pull request.

39
39
19
4
3
8
4
6
6
4
1 stale
4
4
4
6
5
1 stale
5
5
1
1
1
31 docs, listed Oct 3
Live-Charts/LiveCharts2Open repository

Names these docs write that the code no longer has2

Each sentence below names a type the default branch doesn't declare, or declares somewhere else. Edit the doc so it matches the code, or bring the type back.

  • GoneIAnimatable
    The **Core** provides a simple (and sufficient) framework where an [IAnimatable](https://github.com/beto-rodriguez/LiveCharts2/blob/master/src/LiveChartsCore/Drawing/IAnimatable.cs) object knows [its position in a timeline](https://github.com/beto-rodriguez/LiveCharts2/blob/master/src/LiveChartsCore/Drawing/IAnimatable.cs#L46).

    The repository once held src/LiveChartsCore/Drawing/IAnimatable.cs. It doesn't now. Closest name there: Animatable.

    View on GitHub

  • GoneIAnimatable
    Every time we access a motion property we get the value of the property at the current time based on the [IAnimatable](https://livecharts.dev/api/{{ version }}/LiveChartsCore.Drawing.IAnimatable) animation.

    The repository once held src/LiveChartsCore/Drawing/IAnimatable.cs. It doesn't now. Closest name there: Animatable.

    View on GitHub

Live-Charts/LiveCharts2 — documented rules

39 of 39 rules, printed October 3, 2026.

The sentence in your docs
Read Oct 3
**Xi:** Gets or sets the xi, the value where the section starts at the X axis, set the property to null to indicate that the section must start at the beginning of the X axis, default is null.
RectangularSection has Xi
Holds
Read Oct 3
**Xj:** Gets or sets the xj, the value where the section ends and the X axis, set the property to null to indicate that the section must go to the end of the X axis, default is null.
RectangularSection has Xj
Holds
Read Oct 3
**Yi:** Gets or sets the yi, the value where the section starts and the Y axis, set the property to null to indicate that the section must start at the beginning of the Y axis, default is null.
RectangularSection has Yi
Holds
Read Oct 3
**Yj:** Gets or sets the yj, the value where the section ends and the Y axis, set the property to null to indicate that the section must go to the end of the Y axis, default is null.
RectangularSection has Yj
Holds
Read Oct 3
The Rx, Ry, MaxBarWidth, Padding, Stroke, Fill, and IgnoresBarPosition properties behave identically to the equivalents on ColumnSeries — see the [Column Series article]({{ website_url }}/docs/{{ platform }}/{{ version }}/CartesianChart.ColumnSeries) for examples.
RangeColumnSeries has Padding
Holds
Read Oct 3
The Rx, Ry, MaxBarWidth, Padding, Stroke, Fill, and IgnoresBarPosition properties behave identically to the equivalents on ColumnSeries — see the [Column Series article]({{ website_url }}/docs/{{ platform }}/{{ version }}/CartesianChart.ColumnSeries) for examples.
RangeColumnSeries has Stroke
Holds
Read Oct 3
The Rx, Ry, MaxBarWidth, Padding, Stroke, Fill, and IgnoresBarPosition properties behave identically to the equivalents on ColumnSeries — see the [Column Series article]({{ website_url }}/docs/{{ platform }}/{{ version }}/CartesianChart.ColumnSeries) for examples.
RangeColumnSeries has Fill
Holds
Read Oct 3
The simplest way to feed the series is the RangeValue helper in LiveChartsCore.Defaults (shared with RangeColumnSeries and RangeRowSeries), which carries Low and High and maps to the coordinate slots the series expects (PrimaryValue = High, TertiaryValue = Low).
RangeValue is in LiveChartsCore.Defaults
Holds
Read Oct 3
The simplest way to feed the series is the RangeValue helper in LiveChartsCore.Defaults (shared with RangeColumnSeries and RangeRowSeries), which carries Low and High and maps to the coordinate slots the series expects (PrimaryValue = High, TertiaryValue = Low).
RangeValue has Low
Holds
Read Oct 3
The simplest way to feed the series is the RangeValue helper in LiveChartsCore.Defaults (shared with RangeColumnSeries and RangeRowSeries), which carries Low and High and maps to the coordinate slots the series expects (PrimaryValue = High, TertiaryValue = Low).
RangeValue has High
Holds
Read Oct 3
The series exposes the usual Stroke and Fill properties, with a small twist:
RangeLineSeries has Stroke
Holds
Read Oct 3
The series exposes the usual Stroke and Fill properties, with a small twist:
RangeLineSeries has Fill
Holds
Read Oct 3
GeometryStroke and GeometryFill style the markers at each high / low endpoint.
RangeLineSeries has GeometryStroke
Holds
Read Oct 3
GeometryStroke and GeometryFill style the markers at each high / low endpoint.
RangeLineSeries has GeometryFill
Holds
Read Oct 3
LineSmoothness controls the cubic-bezier tangent strength on both curves, exactly like LineSeries — 0 = straight polyline, 1 = fully curved (default 0.65).
RangeLineSeries has LineSmoothness
Holds
Read Oct 3
By default the library already defines a default formatter for every series, all the series have a different formatters, but generally the default value uses the Series.Name and the ChartPoint.Coordinate.PrimaryValue properties, the following code snippet illustrates how to build a custom tooltip formatter.
Series has Name
Holds
Read Oct 3
By default the library already defines a default formatter for every series, all the series have a different formatters, but generally the default value uses the Series.Name and the ChartPoint.Coordinate.PrimaryValue properties, the following code snippet illustrates how to build a custom tooltip formatter.
ChartPoint has Coordinate
Holds
Read Oct 3
We used the Model property of the point, the Model property is just the item in the Values collection, for example in the next case, the Model property is of type City.
ChartPoint has Model
Holds
Read Oct 3
:::tip The PieSeries class uses the ToolTipLabelFormatter property to configure the text inside the tooltip.
PieSeries has ToolTipLabelFormatter
Holds
Read Oct 3
geoMap.DataPointerDown += (sender, points) => { if (points.FirstOrDefault()?.Context.DataSource is not LandDefinition land) return; // Look up each series' value for this land. foreach (var series in geoMap.Series ?? []) if (series.TryGetValue(land.ShortName, out var value)) Console.WriteLine($"{series.Name}: {value}");
LandDefinition has Name and ShortName
Holds
Read Oct 3
:::info Override the gradient endpoints (e.g. to pin the legend to 0–100 even when the data only spans 5–87) by setting MinValue and MaxValue on the HeatLandSeries.
HeatLandSeries has MinValue and MaxValue
Holds
Read Oct 3
Wrap one in a GeoVisualElement(visual) { Longitude, Latitude } to anchor it at a geographic coordinate;
GeoVisualElement has Longitude and Latitude
Holds
Read Oct 3
The marker below is an ordinary Visual whose DrawnElement is a circle.
Visual has DrawnElement
Holds
Read Oct 3
If you need the raw projector — to position something yourself, hit-test a click, etc. — use GeoMapChart.Project(lon, lat) and the inverse GeoMapChart.Unproject(LvcPoint).
GeoMapChart has Project and Unproject methods
Holds
Read Oct 3
If you only need a synchronous lookup (e.g. on a custom gesture), call geoMap.GetPointsAt(new LvcPointD(x, y)) — same ChartPoint shape, no event subscription needed.
GeoMapChart has a GetPointsAt method
Holds
Read Oct 3
If the series specifies the Mapping property, then the global mapper will be ignored and instead it will use the series instance mapper.
ISeries has Mapping
Holds
Read Oct 3
The IChartEntity interface forces our points to have a [Coordinate](https://lvcharts.com/api/2.0.0-beta.710/LiveChartsCore.Kernel.Coordinate), LiveCharts will use this property to build the plot, when the interface is implemented correctly, you will notice a considerable performance improvement, specially on large data sets.
IChartEntity has Coordinate
Holds
Read Oct 3
Now to implement IChartEntity we need to add 2 properties the Coordinate (the location of the point in the UI) and the MetaData (just some information LiveCharts needs to build the chart).
IChartEntity has MetaData
Holds
Read Oct 3
When LiveCharts finds a null instance or the coordinate is set to Coordinate.Empty it will skip the point:
Coordinate has Empty
Holds
Read Oct 3
There are 2 ways to format and axis labels, using the Labels property and using the Labeler property, you must normally use the Labels property to indicate names, and the Labeler property to give format to the current label.
PolarAxis has Labels
Holds
Read Oct 3
There are 2 ways to format and axis labels, using the Labels property and using the Labeler property, you must normally use the Labels property to indicate names, and the Labeler property to give format to the current label.
PolarAxis has Labeler
Holds
Read Oct 3
Finally notice that you can combine the LiveCharts.CotangentAngle and LiveCharts.TangentAngle with decimal degrees, the following expressions are valid also:
LiveCharts has CotangentAngle
Holds
Read Oct 3
Finally notice that you can combine the LiveCharts.CotangentAngle and LiveCharts.TangentAngle with decimal degrees, the following expressions are valid also:
LiveCharts has TangentAngle
Holds
Read Oct 3
We can add custom elements to a chart using the VisualElements property, this property is of type IEnumerable<ChartElement>, the library provides the Visual class, this class inherits from ChartElement and handles animations, the PointerDown event and the creation and destruction of the drawn geometries in the canvas.
Visual extends ChartElement
Holds
Read Oct 3
The easiest way is to inherit from DrawnGeometry, this class implements IDrawnElement and also animates all of its properties;
DrawnGeometry implements IDrawnElement
Holds
Read Oct 3
In the next example we inherit from BoundedDrawnGeometry it only adds the Width and Height properties to the DrawnGeometry class.
BoundedDrawnGeometry extends DrawnGeometry
Holds
Read Oct 3
In the next example we inherit from BoundedDrawnGeometry it only adds the Width and Height properties to the DrawnGeometry class.
BoundedDrawnGeometry has Width
Holds
Read Oct 3
In the next example we inherit from BoundedDrawnGeometry it only adds the Width and Height properties to the DrawnGeometry class.
BoundedDrawnGeometry has Height
Holds
Read Oct 3
Zooming and panning is disabled by default, you can enable it by setting the ZoomMode property, this property is of type [ZoomAndPanMode](https://lvcharts.com/api/{{ version }}/LiveChartsCore.Measure.ZoomAndPanMode), this type is a flag enum it means that you can combine the options as you need, you can learn more about zooming and panning options [here](#options).
ZoomAndPanMode is an enumeration
Holds
39 rules from 9 docs

See these where the change is. The browser extension puts a pull request's doc findings, and a diagram of what it changed, on the GitHub page itself, so the code and what your docs say about it are side by side.