Difference between revisions of "TAChart"

From Lazarus wiki
(Add roadmap)
(Update roadmap)
Line 61: Line 61:
 
* marks.format / style editor
 
* marks.format / style editor
 
* subcomponent editor
 
* subcomponent editor
** same ui as collection editor
+
** add shortcuts, use actions
 
** convert to grid/checklist, show enabled/active checkboxes
 
** convert to grid/checklist, show enabled/active checkboxes
 
** child auto-renaming
 
** child auto-renaming
 +
* bug: series editor hides on double-click: 17077
 +
* bug: AV on Delete
  
 
==== Axises/Transformations ====
 
==== Axises/Transformations ====
  
 
* finish multiaxis
 
* finish multiaxis
** auto-scaling to fixed/percent range
+
** auto-scaling to percent range
 
** non-monotonic (?)
 
** non-monotonic (?)
 
** user-defined transform
 
** user-defined transform
Line 74: Line 76:
 
** inverted as transformation (?)
 
** inverted as transformation (?)
 
** logBase 0 => e ?
 
** logBase 0 => e ?
* finish TIntervalSource
+
* finish TIntervalChartSource
 
* various axis marks steps -- logarithmic etc.
 
* various axis marks steps -- logarithmic etc.
 
* "center" aligned axis
 
* "center" aligned axis
 
* test/fix inverted axis
 
* test/fix inverted axis
 +
* axis.autoscale as a shortcut(?)
 +
* axis.DateTimeFormat(?)
  
 
==== Series ====
 
==== Series ====
  
* 3-d area series
 
 
* 3-d pie series
 
* 3-d pie series
* rotated area series
 
* custom "zero level" for area series
 
 
* top-down and right-to-left series
 
* top-down and right-to-left series
 
* Z axis
 
* Z axis
Line 94: Line 95:
 
* moving series between charts
 
* moving series between charts
 
* splines
 
* splines
 +
* TConstantLine.source -- use X only
  
 
==== Tools ====
 
==== Tools ====
  
* fixed-point zooming
 
* auto-panning (with timer)
 
* animated zoom
 
 
* userdefined tool
 
* userdefined tool
 
* test/fix many charts per toolset
 
* test/fix many charts per toolset
Line 119: Line 118:
 
** stacked/donut pie series (?)
 
** stacked/donut pie series (?)
 
** range bar series
 
** range bar series
 +
** Gantt series (bar.starty, bar.startx, bar.endx)
 
** bubble series
 
** bubble series
* TDateChartSource
 
  
 
==== Labels ====
 
==== Labels ====
  
* complete rotated label support
+
* rotated chart title support (? title is multi-line)
 +
* frame shapes: rounded rects, ellipses, callouts
 +
* fix/improve pie series label positioning
 
* auto-position labels
 
* auto-position labels
  
Line 131: Line 132:
 
* striped background => stripSeries
 
* striped background => stripSeries
 
* embellishments: gradient, shadow, glow(?)
 
* embellishments: gradient, shadow, glow(?)
 +
** color->embellishment mapping(?)
 
* transparency
 
* transparency
 
* Generic drawer: TCanvas/AggPas/OpenGL
 
* Generic drawer: TCanvas/AggPas/OpenGL
Line 137: Line 139:
 
==== Other ====
 
==== Other ====
  
* deprecate tbarchart
 
 
* more documentation
 
* more documentation
 +
* more tests
 
* oscilloscope demo
 
* oscilloscope demo
 
* printing
 
* printing
Line 150: Line 152:
  
 
* AddSubcomponent => SetParentComponent
 
* AddSubcomponent => SetParentComponent
* extract TSubomponentClassRegistry
+
* extract TSubcomponentClassRegistry

Revision as of 21:03, 7 August 2010

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

About

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.

Features

  • Pie Series
  • Bar Series
  • Area Series
  • Line Series (can work as Point Series)
  • Function Series with domain support
  • Unlimited number of series and points on 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
  • Arbitrary number of axises per chart
  • Axis inversion, independent scale and offset, logarithmic scale
  • Interactive zoom
  • Reticule or vertical reticule with point measure
  • Auto or manual graph limits
  • Smart marks drawing
  • Vertical and horizontal lines
  • Easily extensible with new graph types

Screenshot

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

tachart.png

Authors

Luís Rodrigues, Philippe Martinole, Alexander Klenin

Download

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

The old code developed by Philippe is Here: Lazarus CCR Files page.

Usage

See included examples in Lazarus source in (Lazarus Install Dir)/components/tachart/demo/

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
  • subcomponent editor
    • add shortcuts, use actions
    • convert to grid/checklist, show enabled/active checkboxes
    • child auto-renaming
  • bug: series editor hides on double-click: 17077
  • bug: AV on Delete

Axises/Transformations

  • finish multiaxis
    • auto-scaling to percent range
    • non-monotonic (?)
    • user-defined transform
    • partial-linear transform (?) partial zoom demo
    • inverted as transformation (?)
    • logBase 0 => e ?
  • finish TIntervalChartSource
  • various axis marks steps -- logarithmic etc.
  • "center" aligned axis
  • test/fix inverted axis
  • axis.autoscale as a shortcut(?)
  • axis.DateTimeFormat(?)

Series

  • 3-d pie series
  • top-down and right-to-left series
  • Z axis
  • axis.Depth
  • FuncSeries.AxisIndexX
  • rotated func series
  • polar axis and series
  • LineStyle -> AxisIndex for TConstantLine (?)
  • moving series between charts
  • splines
  • TConstantLine.source -- use X only

Tools

  • userdefined tool
  • test/fix many charts per toolset
  • decouple reticule from TChart

Optimization

  • caches
    • graphpoints
    • imagepoints
    • layers/barriers
  • use binsearch in more series

Sources

  • multi-source
    • stacked [full] bar series
    • stacked [full] area series
    • stacked/donut pie series (?)
    • range bar series
    • Gantt series (bar.starty, bar.startx, bar.endx)
    • bubble series

Labels

  • rotated chart title support (? title is multi-line)
  • frame shapes: rounded rects, ellipses, callouts
  • fix/improve pie series label positioning
  • auto-position labels

Presentation

  • striped background => stripSeries
  • embellishments: gradient, shadow, glow(?)
    • color->embellishment mapping(?)
  • transparency
  • Generic drawer: TCanvas/AggPas/OpenGL
  • panes

Other

  • more documentation
  • more tests
  • oscilloscope demo
  • printing
  • better icons
  • lazreport integration
  • export to pdf/svg
  • tutorials
  • wizards

Internal

  • AddSubcomponent => SetParentComponent
  • extract TSubcomponentClassRegistry