Difference between revisions of "TAChart"

From Lazarus wiki
Jump to navigationJump to search
(32 intermediate revisions by 8 users not shown)
Line 2: Line 2:
  
 
=== About ===
 
=== About ===
TAChart is a charting LGPL component for Lazarus (TeeChart like).
+
TAChart is the principal component of a TeeChart-like charting framework for Lazarus offered under an LGPL licence. TeeChart is the charting component installed with recent Delphi versions.
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.
+
It contains functions developed by Philippe Martinole for his TeleAuto project which were revised extensively by Luis Rodrigues when porting the Epanet application from Delphi to Lazarus.
The code was then extensively rewritten, expanded and is now maintained by Alexander Klenin.
+
Alexander Klenin rewrote and expanded much of the code, and is its current maintainer.
  
 
If you have questions, bug reports or feature requests, please post them to the  
 
If you have questions, bug reports or feature requests, please post them to the  
Line 13: Line 13:
 
=== Documentation ===
 
=== Documentation ===
  
Most of TAChart features are demonstrated by examples located in (Lazarus Install Dir)/components/tachart/demo/
+
Many features of TAChart are demonstrated in examples installed at (Lazarus Install Dir)/components/tachart/demo/. See [[TAChart_Demos|TAChart Demos]] for a short description and screenshots.
Some classes and properties are documented by FPDoc.
+
 
[[TAChart documentation]] contains high-level description of most of TAChart concepts and features.
+
Some TAChart classes and properties have been provided with FPDoc documentation (accessed via [F1] in the IDE).
For beginners, following tutorials may be helpful:
+
 
* [[TAChart tutorial: Getting started]];
+
An overview of most of TAChart's concepts and features can be found in the [[TAChart documentation]].
* [[TAChart tutorial: UserDefinedChartSource, Logarithmic_Axis, Fitting]].
+
 
 +
For beginners, the following tutorials may be helpful:
 +
* [[TAChart Tutorial: Getting started]];
 +
* [[TAChart Tutorial: ListChartSource, Logarithmic Axis, Fitting]].
 +
* [[TAChart Tutorial: Userdefined ChartSource]]
 +
* [[TAChart Tutorial: BarSeries]]
 +
* [[TAChart Tutorial: Stacked BarSeries]]
 +
* [[TAChart Tutorial: Dual y axis, Legend]]
 +
* [[TAChart Tutorial: Multiple Panes in one Chart]]
 +
* [[TAChart Tutorial: Function Series]]
 +
* [[TAChart Tutorial: ColorMapSeries, Zooming]]
 +
* [[TAChart Tutorial: Chart Tools]]
 +
* [[TAChart Tutorial: Background design]]
 +
* [[TAChart Runtime FAQ]]
 +
 
 +
The rendering may be improved with another library :
 +
* [[BGRABitmap tutorial TAChart|Rendering with BGRABitmap]].
  
 
=== Features ===
 
=== Features ===
* Pie Series
+
* More than 15 different series, including pie, bar, area, line and point series
* Bar Series
+
* Function series with domain support
* Area Series
+
* No limit to the number of series, points or axes on a graph
* Line Series (can work as Point Series)
+
* Flexible chart sources, including design-time editing, and random, dynamic and database-aware sources.
* 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
 
* Graph legend, title and footer
* Axis labels and marks, manually set or auto-generated
+
* Axis labels and marks can be set manually or auto-generated
* Arbitrary number of axises per chart
 
 
* Axis inversion, independent scale and offset, logarithmic scale
 
* Axis inversion, independent scale and offset, logarithmic scale
* Interactive zoom and panning
+
* Interactive tools, including zoom, panning and crosshairs
* Reticule or vertical reticule with point measure
+
* Automatic or manual graph limits
* Auto or manual graph limits
 
 
* Smart marks drawing
 
* Smart marks drawing
* Vertical and horizontal lines
+
* Easily extensible with new custom series
* Easily extensible with new graph types
 
 
* Output to SVG, OpenGL, printer, WMF, [http://www.crossgl.com/aggpas/ AggPas], [[BGRABitmap]], [[fpvectorial]]
 
* Output to SVG, OpenGL, printer, WMF, [http://www.crossgl.com/aggpas/ AggPas], [[BGRABitmap]], [[fpvectorial]]
 +
* Can be used in non-GUI applications, such as web services
 +
* Being actively developed, see [[TAChart_Roadmap|roadmap]]
  
 
=== Screenshot ===
 
=== Screenshot ===
Line 52: Line 64:
  
 
=== 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 in the Lazarus SVN repository (the components are on the Chart Tab in Lazarus).
 
 
=== 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
 
* GIS
 
* 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 ===
 +
* [[RingChart and AnalogWatch]]
 +
* [[PlotPanel]]
 +
* [[Comparing_TAChart_with_Delphi's_TeeChart_Standard|Comparing TAChart with Delphi's TeeChart Standard]]
  
* [[RingChart and AnalogWatch]]
+
{{LCL Components}}
* [[TAChart documentation]]
 
* [[TAChart tutorial: Getting started]]
 
* [[TAChart tutorial: UserDefinedChartSource, Logarithmic_Axis, Fitting]]
 
  
 +
[[Category:Lazarus]]
 
[[Category:Components]]
 
[[Category:Components]]
 
[[Category:Graphics]]
 
[[Category:Graphics]]
 +
[[Category:TAChart]]

Revision as of 19:03, 15 June 2018

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

About

TAChart is the principal component of a TeeChart-like charting framework for Lazarus offered under an LGPL licence. TeeChart is the charting component installed with recent Delphi versions.

It contains functions developed by Philippe Martinole for his TeleAuto project which were revised extensively by Luis Rodrigues when porting the Epanet application from Delphi to Lazarus. Alexander Klenin rewrote and expanded much of the code, and is its current maintainer.

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

Documentation

Many features of TAChart are demonstrated in examples installed at (Lazarus Install Dir)/components/tachart/demo/. See TAChart Demos for a short description and screenshots.

Some TAChart classes and properties have been provided with FPDoc documentation (accessed via [F1] in the IDE).

An overview of most of TAChart's concepts and features can be found in the TAChart documentation.

For beginners, the following tutorials may be helpful:

The rendering may be improved with another library :

Features

  • More than 15 different series, including pie, bar, area, line and point series
  • Function series with domain support
  • No limit to the number of series, points or axes on a graph
  • Flexible chart sources, including design-time editing, and random, dynamic and database-aware sources.
  • Graph legend, title and footer
  • Axis labels and marks can be set manually 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 custom series
  • Output to SVG, OpenGL, printer, WMF, AggPas, BGRABitmap, fpvectorial
  • Can be used in non-GUI applications, such as web services
  • Being actively developed, see roadmap

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 in the Lazarus SVN repository (the components are on the Chart Tab in Lazarus).

See also


LCL Components
Component Tab Components
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn • TSpeedButton • TStaticText • TImage • TShape • TBevel • TPaintBox • TNotebook • TLabeledEdit • TSplitter • TTrayIcon • TControlBar • TFlowPanel • TMaskEdit • TCheckListBox • TScrollBox • TApplicationProperties • TStringGrid • TDrawGrid • TPairSplitter • TColorBox • TColorListBox • TValueListEditor
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TTaskDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TCSVDataSet • TSdfDataSet • TBufDataset • TFixedFormatDataSet • TDbf • TMemDataset
System TTimer • TIdleTimer • TLazComponentQueue • THTMLHelpDatabase • THTMLBrowserHelpViewer • TAsyncProcess • TProcessUTF8 • TProcess • TSimpleIPCClient • TSimpleIPCServer • TXMLConfig • TEventLog • TServiceManager • TCHMHelpDatabase • TLHelpConnector
Misc TColorButton • TSpinEdit • TFloatSpinEdit • TArrow • TCalendar • TEditButton • TFileNameEdit • TDirectoryEdit • TDateEdit • TTimeEdit • TCalcEdit • TFileListBox • TFilterComboBox • TComboBoxEx • TCheckComboBox • TButtonPanel • TShellTreeView • TShellListView • TXMLPropStorage • TINIPropStorage • TJSONPropStorage • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TLvlGraphControl • TShortPathEdit • TSpinEditEx • TFloatSpinEditEx • TTreeFilterEdit • TExtendedTabControl •
RTTI TTIEdit • TTIComboBox • TTIButton • TTICheckBox • TTILabel • TTIGroupBox • TTIRadioGroup • TTICheckGroup • TTICheckListBox • TTIListBox • TTIMemo • TTICalendar • TTIImage • TTIFloatSpinEdit • TTISpinEdit • TTITrackBar • TTIProgressBar • TTIMaskEdit • TTIColorButton • TMultiPropertyLink • TTIPropertyGrid • TTIGrid
SQLdb TSQLQuery • TSQLTransaction • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TMySQL57Connection • TSQLite3Connection • TIBConnection • TFBAdmin • TFBEventMonitor • TSQLDBLibraryLoader
Pascal Script TPSScript • TPSScriptDebugger • TPSDllPlugin • TPSImport_Classes • TPSImport_DateUtils • TPSImport_ComObj • TPSImport_DB • TPSImport_Forms • TPSImport_Controls • TPSImport_StdCtrls • TPSCustomPlugin
SynEdit TSynEdit • TSynCompletion • TSynAutoComplete • TSynMacroRecorder • TSynExporterHTML • TSynPluginSyncroEdit • TSynPasSyn • TSynFreePascalSyn • TSynCppSyn • TSynJavaSyn • TSynPerlSyn • TSynHTMLSyn • TSynXMLSyn • TSynLFMSyn • TSynDiffSyn • TSynUNIXShellScriptSyn • TSynCssSyn • TSynPHPSyn • TSynTeXSyn • TSynSQLSyn • TSynPythonSyn • TSynVBSyn • TSynAnySyn • TSynMultiSyn • TSynBatSyn • TSynIniSyn • TSynPoSyn
Chart TChart • TListChartSource • TRandomChartSource • TUserDefinedChartSource • TCalculatedChartSource • TDbChartSource • TChartToolset • TChartAxisTransformations • TChartStyles • TChartLegendPanel • TChartNavScrollBar • TChartNavPanel • TIntervalChartSource • TDateTimeIntervalChartSource • TChartListBox • TChartExtentLink • TChartImageList
IPro TIpFileDataProvider • TIpHtmlDataProvider • TIpHttpDataProvider • TIpHtmlPanel
Virtual Controls TVirtualDrawTree • TVirtualStringTree • TVTHeaderPopupMenu