Difference between revisions of "TAChart"

From Lazarus wiki
Line 54: Line 54:
=== Download ===
=== Download ===
The latest stable release can be found on the in the Lazarus SVN repository (The components are on the Chart Tab)
The latest stable release can be found on the in the Lazarus SVN repository (The components are on the Chart Tab)
=== Roadmap ===
Below is a list of items that would be good to have in TAChart.
Some of them are planned for implementation by the current maintainer,
others will require patches from interested contributors.
==== Editors ====
* TChartExtent editor
* axis index editor
* series index list editor
* ListSource.DataPoints editor
* marks.format/style editor
* margins editor
* subcomponent editor
** add shortcuts, use actions
** convert to grid/checklist, show enabled/active checkboxes
==== Axises/Transformations ====
* finish multiaxis
** auto-scaling to percent range
** non-monotonic (?)
** partial-linear transform (?)
** inverted as transformation (?)
** logBase 0 => e ?
* finish TIntervalChartSource
* various axis marks steps -- logarithmic etc.
** advances axis step controls -- mix/maxPixelsPerStep, stepsPerChart, stepSize(Pixels/Graph/Axis)...
* "center" aligned axis
* test/fix inverted axis
* axis.autoscale as a shortcut(?)
* axis.DateTimeFormat(?)
* axis.Depth
* update margins for axis.ZPosition
* walls
==== Series ====
* 3-d series: pie, bubble, box-and-whiskers(?), OHLC(?)
* bar: pyramid, code, cylinder, prism, number of faces
* bug: all-negative area has no zero plane
* top-down and right-to-left series
* Z axis, XZ and YZ grids
* polar axis
* polar series: labels, brush, pointers
* LineStyle -> AxisIndex for TConstantLine (?)
* TConstantLine.Source -- use X only
* 3-d surface
* color map:
** isolines & labels,
** gradients,
** data interpolation, auto-scale colors (thresholds in percent)
** better design-time display,
** transparency threshold (?) / ColorSource.Y as opacity (?)
* range bar series
* Gantt series (bar.starty, bar.startx, bar.endx)
* stacked/donut pie series (?)
* test/fix rotated stacked series
* subcharts
* func series: GetNearestPoint/reticule x=>f(x), discontinuity pointers
* slopegraphs, sparklines (?)
* arrow series
==== Legend ====
* ColumnPerGroup
* legend line per stack level
* format
* legendpanel.autosize -> scrollable with scrollbox
==== Tools ====
* test/fix many charts per toolset
* decouple reticule from TChart
==== Optimization ====
* caches
** graphpoints
** imagepoints
** layers/barriers
==== Sources ====
* OO (incompatible?)
* YList in Marks.Format
* calculated sources: optimization, sliding median
* bug: db-source does not auto-refresh after dataset changes (?)
* NaN as null -- break in line, area, polar, pie (?)
==== Labels ====
* frame shapes: rounded rects, ellipses, callouts
* fix/improve pie series label positioning
** "sideband" positioning
** special label attachments: "center", "side center", "nearest point"
* auto-position labels: two-level, generic, GA
* free labels (notes)
* control label attachment (top, bottom, center, ...)
==== Presentation ====
* embellishments: gradient, shadow, glow(?)
** color->embellishment mapping(?)
* transparency
* Generic renderer (?): OpenGL, SVG, true 3-d
* TCanvas-independent API: TChartPen, TChartBrush, TChartFont
* panes
* styles: apply to more series, usecolor, perstack/perpoint
** embelishments from styles ?
==== Chart ====
* DepthX/DepthY ...or... CameraVector
* navigation: "axis scrollbar"
* measuring units: pixels, graph, percent
* TChartExtentLink -- another way to simulate panes
==== Other ====
* more documentation
* more tests
* oscilloscope demo
* better icons
* lazreport integration
* tutorials
* wizards
* shapes
==== Internal ====
* AddSubcomponent => SetParentComponent
* extract TSubcomponentClassRegistry
=== See also ===
=== See also ===

Revision as of 05:44, 14 October 2012

Deutsch (de) English (en) español (es) français (fr) português (pt) русский (ru) українська (uk) 中文(中国大陆)‎ (zh_CN)


TAChart is a charting LGPL component for Lazarus (TeeChart like). It contains the functions that Philippe Martinole developed for the TeleAuto project and lots of changes introduced by Luis Rodrigues while porting the Epanet application from Delphi to Lazarus. The code was then extensively rewritten, expanded and is now maintained by Alexander Klenin.

If you have questions, bug reports or feature requests, please post them to the Lazarus mailing list or TAChart board of the Lazarus forum.


Most of TAChart features are demonstrated by examples located in (Lazarus Install Dir)/components/tachart/demo/ Some classes and properties are documented by FPDoc. TAChart documentation contains high-level description of most of TAChart concepts and features.

For beginners, following tutorials may be helpful:


  • 15+ different series, including pie, bar, area, line and point series
  • Function series with domain support
  • Unlimited number of series, points and axises on a graph
  • Flexible chart sources, including design-time editable, random, dynamic and db-aware sources.
  • Graph legend, title and footer
  • Axis labels and marks, manually set or auto-generated
  • Axis inversion, independent scale and offset, logarithmic scale
  • Interactive tools, including zoom, panning and crosshairs
  • Automatic or manual graph limits
  • Smart marks drawing
  • Easily extensible with new series types
  • Output to SVG, OpenGL, printer, WMF, AggPas, BGRABitmap, fpvectorial
  • Can be used in non-GUI applications, such as web services
  • In active development, see roadmap


Here is an example of TAChart displaying a Line Series, Bar Series and Pie Series



Luís Rodrigues, Philippe Martinole, Alexander Klenin


The latest stable release can be found on the in the Lazarus SVN repository (The components are on the Chart Tab)

See also