Difference between revisions of "TAChart Roadmap"

From Lazarus wiki
Jump to navigationJump to search
 
(8 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 77: Line 77:
 
* different widths for columns
 
* different widths for columns
 
* arbitrary position
 
* arbitrary position
 +
* <s>support clicks on series items</s>
 +
* support FontSeriesColor
  
 
==== 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>
 +
* <s>legend click tool</s>
 +
* <s>title/footer click tool</s>
  
 
==== Optimization ====
 
==== Optimization ====
Line 95: Line 99:
 
* 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 110:
 
* 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 132:
  
 
==== 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 148:
 
* 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 167:
 
* 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:TAChart]]
 +
[[Category: Roadmaps]]

Latest revision as of 11:36, 24 October 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
  • support clicks on series items
  • support FontSeriesColor

Tools

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

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