-
Notifications
You must be signed in to change notification settings - Fork 981
Description
This is a collection of tasks and features I intend to focus on in the order I plan to work on them. I desire to accomplish everything eventually, but this list helps me to arrange near-term priorities. Previous triage issues: #651, #412.
Primary Focus (June, 2022)
Primary Focus (March, 2022)
-
ScottPlot 4.1 is stable. Focus on maintenance and bug fixes (do not aggressively add features).
-
ScottPlot 5.0 is early in development. Wait for
Microsoft.Maui.Graphicsto mature and stabalize before aggressively resuming development. See comments in ScottPlot5: development #1647 for considerations and next steps. -
As ScottPlot 5 matures, focus on improving the website and documentation
Primary Focus (February, 2022)
- I enacted a soft feature freeze to allow me to focus on ScottPlot 5
Primary Focus (November, 2021)
-
Maintenance: Rapidly address or close issues/PRs to concentrate effort on these high priority goals
-
Abstract the Rendering System: Work toward Refactor: System.Drawing → SkiaSharp (or Maui.Graphics?) #1036 while Microsoft.Maui.Graphics continues to mature (release targeted for Q2, 2022)
-
Refactor TickCollection to improve performance, reliability, and add support for advanced tick features:
- horizontal DateTime ticks overlap #725
- improve DateTime tick spacing #725 #925
- Add support for a custom tick label formatting function #926
- Radices #475
- Allow Axis Labels in different radices #469
- Minor houskeeping on ScottPlot.Tools #935
- Xticks custom positions and labels #648
- Manual grid/tick positions look bad when zooming out #644
- Add support for a custom tick label formatting function #926 6
- Is there a way to change the displayed values on the x and y axis without actually scaling them? #1070
- Add support for a custom tick label formatting function #926
Triaged Tasks and Features
This list will be reviewed and re-categorized as the primary focus tasks above have are accomplished
Get ScottPlot 4.1 out of Beta
- Modernize demo application (Improve user control documentation & demo application #887)
- Fix mouse events and make enter/leave demo (Improve mouse interactions in controls #999)
- Fix offset and multiplier notation (How to enable engineering notation for tick labels (multiplier notation) #1026)
- Improve design-time appearance of WpfPlot (Improve appearance of controls in designer mode #1043)
- Improve support and documentation for queued rendering (Add RenderRequest() to controls for non-blocking rendering #1034)
- set up DocFX for API documentation (Reconsider DocFX for API documentation #1047)
- Update documents to describe ScottPlot 4.1 (4.0.x Fixes crash with ScatterPlots containing a single point #949, Adds request for environment info on applicable issue templates. #966)
- add FAQ page describing 4.0 to 4.1 changes (link)
- Remove the beta/pre-release designation and release ScottPlot 4.1 on NuGet (Review 4.1 API #715)
High Priority / Next Release
- Move the ScottPlot Overview into the FAQ and update for 4.1
- Add plottable drag/drop events and mark old names obsolete (Add PlottableDragged and PlottableDropped event handlers to 4.1 controls #1072)
- Hide the design time error message in WPF control by default(WpfPlot: Hide error label by default #1073)
- Add rendering test for font detection (Font rendering error on Fedora Linux #1079)
- Fix/refactor color palette system (How to customize the color Palette used for plottables #1058, custom color palette #1082)
- Add options to exclude axis lines and spans from automatic axis calculations (Improve mouse interactions in controls #999, add IgnoreAxisAuto field to axis lines and spans #1083)
- Add bitmap interpolation to heatmaps (Add option to heatmaps for customizing smoothing/interpolation #1003, Heatmap.Smooth - smoothing enabled by bitmap interpolation #1085)
- Fix bug causing
Configuration.RenderIfPlottableCountChangesto be ignored (Call Render() automatically when plottable content (not count) changes #1087) - Improve automatic rendering based on unique plottables instead of count (Call Render() automatically when plottable content (not count) changes #1087)
- Add crosshair axis label (Improve mouse interactions in controls #999)
- Fix bug affecting reset and delayed rendering (Hard crash after FormsPlot.Reset() #1098, Backend.Resize(): useDelayedRendering argument #1099)
- Allow tick relabeling with
Axis.SetCustomLabelFunction(func<double, string> func)(Is there a way to change the displayed values on the x and y axis without actually scaling them? #1070, Add support for a custom tick label formatting function #926) - Fix AxisAutoX and AxisAutoY (AxisAutoY() not workig properly #1089)
High Priority
- Add a "how to contribute a code modification" section that describes git/PRs to contributing.md (Add "step" option for low density rendering mode in Signal plots #1092)
- Ensure all Q&A Discussions have marked answers
- Step mode for signal plots (Add "step" option for low density rendering mode in Signal plots #1092)
- Individual coloring of bars in bar plots (BarPlot: allow bars to be individually customized #1071)
- Add methods to make it easier to add live data to scatter, signal, bar, and finance plots. This may or may not involve a data object to manage array resizing and data validation. (SignalPlotList #815, Consider using data objects for live plots #841, Improve in-place updates for finance plots #827, How to update and remove points in scatter plots #1042)
- Scatter plots should be able to plot data with gaps (Scatter plot - support for plotting data with gaps? #976)
- Refactor markers to allow custom markers and additional marker options (Ability to use custom-drawn markers #386, Allow Array of Markersize in AddScatter #784, Marker Transparency #785, Custom marker shapes #786)
- Break the
Toolsclass into smaller classes. Move statistical logic out of histogram class and improve names and documentation in the histogram class. (Histogram normalization #930, Histogram normalization #2 #932, Normalizes countsFracCurve in Histograms #934, Histogram countsFracCurve should not be normalized by default #624) - Create a
Generateclass with functions with more logical and better documented function signatures thanDataGen(Better document DataGen #902, Datagen docs #903) - Consider using a double-buffering system (Use WriteableBitmap to improve performance of WPF rendering #1388)
- BarPlot should accept an array of Bar objects to allow bars to be individually customized (BarPlot: allow bars to be individually customized #1071)
- Hacktoberfest: Prepare for Hacktoberfest 2021 🎃🚀 #1274
- Devops: Automate package deployment
- Move CI from Azure Pipelines to GitHub Actions
- GitHub releases trigger package deployment to NuGet
- Start using ScottPlot.NET (ScottPlot.NET repository)
- GitHub releases generate and deploy cookbook and demo app
- Controls: mappable keys and buttons (Controls: Custom/mappable keys and buttons #1354, Implemented swap mouse Left Pan <-> Middle zoom #1335)
Moderate Priority
- Improve async rendering support and documentation/demonstration of the render queue (Problems calling Render() in response to AxesChanged events #736, WpfPlot has slower framerate during mouse interactions in version 4.1 #761, Process render events with RenderQueue. #813)
- Improve API consistency for deep styling options (How to scale correctly for high-resolution plots #981)
- Consider using nullable annotations C# 8 nullable support #691
- Improve the heatmap plot type project 1, Fixed Radius in `ScottPlot.Tools.XYToIntensities` #666, Implemented separable gaussian blur for improved performance. #667, Coordinated Heatmap #701, Add CoordinatedHeatmap #707, Heatmap edges fix #713
- Clean the
/devfolder and move meta content to the ScottPlot website - Prevent obsolete plot methods from being browsable (AddHeatMapCoordinated → AddHeatmapCoordinated #963)
- Document how to create custom plot types on the FAQ page (drawing a circle with an absolute radius size #973)
- Revisit error checking and validation to see if that behavior should be stripped/changed (Allow user to customize mouse wheel Zoom speed. #940, Add diagnostic mode #553)
- Create architecture.md
- Support deep copying of plots. This may require allowing deep copies of all styling and plottable classes. (How to deeply copy a plot and show it in a new window #819, Plot.Copy() is not copying all information #1010)
- Axis label for mouse crosshair (Improve mouse interactions in controls #999)
- The style system should use classes or structs not enums (Refactor the style system #1291, Refactor style system #1299)
- Improve multiplot support (Improve ScottPlot.MultiPlot #1137)
- Refactor back-end to use abstracted buttons (make it easy to change what buttons do, Custom Mouse command #1222)
- Colorbar: get value under cursor Colorbar: get value under cursor #1494
- Detect mouse events in axis area Axis: Improve pan/zoom behavior and add AxisClicked event #1601
- Create a package to plot DataFrames and improve notebook features ScottPlot.Notebook: tools for DataFrames and interactive notebooks #1825
Plottable
- Add options to customize location of L-shaped scale bar (L-shaped scalebar #363)
- Extend the legend to support horizontal orientation or columns (Arrange legend items horizontally (instead of stacked vertically) #580)
- Add legend options to place it outside the plot area (How to display legend outside the plot area? #1279)
- Fix histogram calculations and add tests that assert bins/counts are identical to those calculated with python and numpy/matplotlib (Histogram bins/counts should be identical to similar libraries (numpy) #1051)
- OHLC bars should show values in a tooltip when the mouse is near them (Tooltip and Annotation Renderables #696). When this is added it seems useful to make a static class with static methods for drawing tooltips, and it can simply be called from any plottable which needs a tooltip drawn.
- Improve efficiency of scatter plot point distance measurements (Highlight point near cursor with pixel space awareness #709)
- Wiggle plot (New plot type: wiggle plot #450)
- Dendrogram (New plot type: Dendrogram #987)
- Consider having scatter plots treat NaN as breaks in the line (ScottPlot not able to handle
NaNdata points #1161) - Components like markers, lines, and errorbars should be reusable
- Heatmap: row/column labels, cell value labels, and palette support (Heatmap: row and column labels #1273, Heatmaps (Categorized and Continuous) #420)
- Coxcomb: non-linear (square root) scaling (Coxcomb: non-linear scaling #1450)
- Population: full vs. half box-and-whisker (PopulationPlot: ScatterOnBox data format #1440)
- Violin Plot (Violin Plot (suggestion for new plot type) #1301)
- Bracket (New plot type: Bracket #1302)
- TreeMap (Treemap: new plot type #1479)
- ScatterPlot should have a
ScatterPlotBaseand reduce duplicate code across all the different types of scatter plots (ScatterPlotDraggable: experimental scatter plot with mouse-draggable points #1422) - MultipleLineSeries plot (New plot type: MultipleLineSeries #1579)
- Strip charts: New plot type: Strip Charts #1551
- Forest plot: New plot type: Forest Plot #1552
- BarSeries: BarSeries: new plot type? #1749
- Background: Background: new plot type? #1867
- Pie labels with connecting lines: Pie: Add support for external labels with connecting lines #1940
Documentation
- Create a Finance Demo (not a cookbook example, but a full demo program) to consolidate common finance-related tasks in one program. This demo should describe how to add live incoming data (Use ImmutableSortedSet for growing data #395, Financial plots with growing data #403, Refactor all controls to use a common back-end #637)
- Work toward enabling CS1591 at the project level
- Consider using traditional documentation generators (Datagen docs #903)
- Document how to change mouse button functionality (e.g., middle-click-drag pan, Is it possible to change key binds #352)