Difference between revisions of "TAChart Roadmap"

From Lazarus wiki
Jump to navigationJump to search
(Strike out items which certainly are done)
Line 21: Line 21:
 
* various axis marks steps -- logarithmic etc.
 
* various axis marks steps -- logarithmic etc.
 
* fixed start/step interval source (?)
 
* fixed start/step interval source (?)
* use Intrevals.Count in custom source
+
* use Intervals.Count in custom source
 
* merge Intervals of axis and source (?)
 
* merge Intervals of axis and source (?)
 
** advanced axis step controls -- targetStepSize(Pixels/Graph/Axis)...
 
** advanced axis step controls -- targetStepSize(Pixels/Graph/Axis)...
Line 38: Line 38:
 
==== Series ====
 
==== Series ====
  
* 3-d series: bubble, box-and-whiskers(?), OHLC(?), func
+
* 3-d series: <s>bubble, box-and-whiskers(?), OHLC(?),</s> func
* fix 3-d pie series with exploded slices
+
* <s>fix 3-d pie series with exploded slices</s>
* bar: pyramid, code, cylinder, prism, number of faces
+
* bar: <s>pyramid, code, cylinder, prism, </s>number of faces
 
* bug: all-negative area has no zero plane
 
* bug: all-negative area has no zero plane
 
* top-down and right-to-left series
 
* top-down and right-to-left series
 
* Z axis, XZ and YZ grids
 
* Z axis, XZ and YZ grids
 
* polar axis
 
* polar axis
* polar series: labels, brush, pointers
+
* <s>polar series: labels, brush, pointers</s>
 
* TConstantLine.Source -- use X only
 
* TConstantLine.Source -- use X only
 
* 3-d surface
 
* 3-d surface
Line 56: Line 56:
 
* range bar series
 
* range bar series
 
* Gantt series (bar.starty, bar.startx, bar.endx)
 
* Gantt series (bar.starty, bar.startx, bar.endx)
* stacked/donut pie series (?)
+
* stacked<s>/donut</s> pie series (?)
* test/fix rotated stacked series
+
* <s>test/fix rotated stacked series</s>
 
* subcharts
 
* subcharts
 
* GIS
 
* GIS
Line 79: Line 79:
 
==== Tools ====
 
==== Tools ====
  
* test/fix many charts per toolset
+
* <s>test/fix many charts per toolset</s>
* remove old reticule
+
* <s>remove old reticule</s>
 
* xorpen/xortext in all drawers
 
* xorpen/xortext in all drawers
 
* label editor/notes
 
* label editor/notes
* axis tools
+
* <s>axis tools</s>
  
 
==== Optimization ====
 
==== Optimization ====
Line 94: Line 94:
 
* OO (incompatible?)
 
* OO (incompatible?)
 
* YList in Marks.Format
 
* YList in Marks.Format
* calculated sources: optimization, sliding median, user-derined filter
+
* calculated sources: optimization, sliding median, user-defined filter
* derivative: Savitzky-Golay, non-equidistant X
+
* derivative: <s>Savitzky-Golay</s>, non-equidistant X
 
* bug: db-source does not auto-refresh after dataset changes (?)
 
* bug: db-source does not auto-refresh after dataset changes (?)
* support NaN in all series: func, ...
+
* <s>support NaN in all series: func, ...</s>
 
* TColorSource (?)
 
* TColorSource (?)
 
* more animations
 
* more animations
Line 143: Line 143:
 
* crosshair page in tools demo
 
* crosshair page in tools demo
 
* zerolevel (?)
 
* zerolevel (?)
* from tutorials
+
* <s>from tutorials</s>
  
 
==== Other ====
 
==== Other ====
  
* warnings (incompatible axises in group, ...)
+
* warnings (incompatible axes in group, ...)
 
* more documentation
 
* more documentation
 
* more tests
 
* more tests
Line 162: Line 162:
 
* AddSubcomponent => SetParentComponent
 
* AddSubcomponent => SetParentComponent
 
* extract TSubcomponentClassRegistry
 
* extract TSubcomponentClassRegistry
* LazFreeType in nogui (or even OpenGL)
+
* <s>LazFreeType in nogui (or even OpenGL)</s>
 
* bresenham in TesselateRadialPie
 
* bresenham in TesselateRadialPie
 
* advanced notification
 
* advanced notification

Revision as of 11:23, 31 December 2020

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
  • series index list editor
  • ListSource.DataPoints editor: intergate with YCount
  • 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
    • partial-linear/local zoom transform (?)
    • inverted as transformation (?)
    • logBase 0 => e ?
  • non-decartes axises + XY transform (ternary, polar...)
  • various axis marks steps -- logarithmic etc.
  • fixed start/step interval source (?)
  • use Intervals.Count in custom source
  • merge Intervals of axis and source (?)
    • advanced axis step controls -- targetStepSize(Pixels/Graph/Axis)...
  • test/fix inverted axis
  • axis.autoscale as a shortcut(?)
  • axis.DateTimeFormat(?)
  • axis.Depth
  • walls
  • YYYMMDD -> datetime transform(?)
  • LineRange(?)
  • arrows: fill color, pixel-symmetrical
  • fixed size/synchronize axis size between linked charts
  • "axis breaks" -- transformation?
  • Cartesian Distortion: http://bost.ocks.org/mike/fisheye/#cartesian

Series

  • 3-d series: bubble, box-and-whiskers(?), OHLC(?), func
  • fix 3-d pie series with exploded slices
  • 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
  • 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: discontinuity pointers
  • slopegraphs, sparklines (?)
  • arrow series
  • use Hare-Niemer integer compensation to make sure that percents always add up to 100% (??)
  • pie chart slice grouping: MinSliceSize (?)
  • ternary charts (?)
  • measurement series
  • support infinity in more series

Legend

  • ColumnPerGroup
  • legend line per stack level
  • legendpanel.autosize -> scrollable with scrollbox
  • different widths for columns
  • arbitrary position

Tools

  • test/fix many charts per toolset
  • remove old reticule
  • xorpen/xortext in all drawers
  • label editor/notes
  • axis tools

Optimization

  • caches: graphpoints, imagepoints, layers/barriers
  • image cache for tools

Sources

  • OO (incompatible?)
  • YList in Marks.Format
  • calculated sources: optimization, sliding median, user-defined filter
  • derivative: Savitzky-Golay, non-equidistant X
  • bug: db-source does not auto-refresh after dataset changes (?)
  • support NaN in all series: func, ...
  • TColorSource (?)
  • more animations

Labels

  • fix labels with NaNs
  • margins
  • more frame shapes: rhumb, hexagon, octagon...
    • control shape corner size
  • 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, ...)
  • Styles stored false
  • measure non-symmetrical labels correctly

Presentation

  • embellishments: gradient, shadow, glow(?)
    • color->embellishment mapping(?)
  • 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 ?

Drawers

  • transparency in all drawers (print, wmf, ...)
  • monochrome in all drawers
  • putImage in all drawers
  • extract PrepareSimplePen

Chart

  • DepthX/DepthY ...or... CameraVector
  • navigation: "axis scrollbar", CurrentExtentPen, limit navscrollbar to the extent
  • measuring units: pixels, graph, percent

Demos

  • crosshair page in tools demo
  • zerolevel (?)
  • from tutorials

Other

  • warnings (incompatible axes in group, ...)
  • more documentation
  • more tests
  • better icons
  • lazreport integration
  • more tutorials
  • wizards
  • shapes
  • LazLogger
  • better teechart compatibility

Internal

  • AddSubcomponent => SetParentComponent
  • extract TSubcomponentClassRegistry
  • LazFreeType in nogui (or even OpenGL)
  • bresenham in TesselateRadialPie
  • advanced notification