Difference between revisions of "TAChart Roadmap"

From Lazarus wiki
Jump to navigationJump to search
(Created page with "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 int...")
 
(7 intermediate revisions by 3 users not shown)
Line 13: Line 13:
  
 
==== Axises/Transformations ====
 
==== Axises/Transformations ====
 
 
* finish multiaxis
 
* finish multiaxis
 
** auto-scaling to percent range
 
** auto-scaling to percent range
Line 22: 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 29: Line 28:
 
* axis.DateTimeFormat(?)
 
* axis.DateTimeFormat(?)
 
* axis.Depth
 
* axis.Depth
* update margins for axis.ZPosition
 
 
* walls
 
* walls
 
* YYYMMDD -> datetime transform(?)
 
* YYYMMDD -> datetime transform(?)
Line 36: Line 34:
 
* fixed size/synchronize axis size between linked charts
 
* fixed size/synchronize axis size between linked charts
 
* "axis breaks" -- transformation?
 
* "axis breaks" -- transformation?
 +
* Cartesian Distortion: http://bost.ocks.org/mike/fisheye/#cartesian
  
 
==== 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 55: Line 54:
 
** better design-time display,
 
** better design-time display,
 
** transparency threshold (?) / ColorSource.Y as opacity (?)
 
** transparency threshold (?) / ColorSource.Y as opacity (?)
* range bar series
+
* <s>range bar series</s>
 
* 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
 
* func series: discontinuity pointers
 
* func series: discontinuity pointers
 
* slopegraphs, sparklines (?)
 
* slopegraphs, sparklines (?)
* arrow series
+
* <s>arrow series</s>
 
* use Hare-Niemer integer compensation to make sure that percents always add up to 100% (??)
 
* use Hare-Niemer integer compensation to make sure that percents always add up to 100% (??)
 
* pie chart slice grouping: MinSliceSize (?)
 
* pie chart slice grouping: MinSliceSize (?)
Line 69: Line 68:
 
* measurement series
 
* measurement series
 
* support infinity in more series
 
* support infinity in more series
 +
* <s>polygon series</s>
  
 
==== Legend ====
 
==== Legend ====
Line 80: Line 80:
 
==== 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 95: Line 95:
 
* 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
  
 
==== Labels ====
 
==== Labels ====
Line 105: Line 106:
 
* fix labels with NaNs
 
* fix labels with NaNs
 
* margins
 
* margins
* more frame shapes: rounded rects, ellipses, callouts
+
* more frame shapes: rhumb, hexagon, octagon...
 +
** control shape corner size
 
* fix/improve pie series label positioning
 
* fix/improve pie series label positioning
 
** "sideband" positioning
 
** "sideband" positioning
Line 126: Line 128:
  
 
==== Drawers ====
 
==== Drawers ====
 +
 
* transparency in all drawers (print, wmf, ...)
 
* transparency in all drawers (print, wmf, ...)
* radial pie in all drawers
+
* monochrome in all drawers
 +
* putImage in all drawers
 
* extract PrepareSimplePen
 
* extract PrepareSimplePen
  
Line 140: Line 144:
 
* 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 159: Line 163:
 
* 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
 +
 +
[[Category:TAChart]]
 +
[[Category: Roadmaps]]

Revision as of 18:07, 14 January 2021

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
  • polygon 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