-
Notifications
You must be signed in to change notification settings - Fork 981
Closed
Description
This page is a collection of low-priority tasks and features I hope to accomplish eventually, but are not being actively developed at this time. The ScottPlot Roadmap outlines high-priority targets I am currently focusing my development efforts into, and after the core components of ScottPlot mature and stabilize it will be easier to work through this list.
Completed
- Make
Plottablean interface (don't rename it though) and turnvisibletoIsVisible() - Create a central
Transformmodule and have all plottables use itsGetPixel(x, y)to convert data positions to screen pixels - the new dimensions object does this - Add "show value under mouse" support How to Show Value on Hover? #115 - demo applications demonstrate this
- Add a text rendering method to
Drawingand funnel allGraphics.DrawString()calls through it. Add alignment support, not just for text alignment but also for anchor alignment (aligned how, with reference to what?). Add arguments to Title, XLabel, and YLabel to control alignment of those labels add option for axis label text alignment #411 - Make grid a special type of plottable (
Renderable?) - Make labels (title, xlabel, ylabel) a special type of plottable (
Renderable?) - Make axes a special type of plottable (
Renderable?) - Support multiple Y axes multiple Y axes #180, second Y axis #213, Multiple Y axes on a single graph #478, Provide secondary vertical axis #510 - done in ScottPlot 4.1 (Road to ScottPlot 4.1 #578)
- Make legend a special type of plottable (
Renderable?) so it's easier to customize Legend covers plot #388 refactor Legend system #318 Legend module refactor #253 legend shadow #45 - Don't use separate bitmaps for the figure, data, and legend. Instead use 1 bitmap and clipping to only draw on the desired component. This increases simplicity and performance.
- The render method should be really simple: Just iterate through a
List<Renderable>and call theRender()method for each object (passing in the bitmap to render on). - Make render system accept an
IRendererwhich defaults to aSystem.Drawingrenderer, but will also accept a custom one (paving the way for a SkiaSharp+OpenGL control). Small-scale exploration of these concepts is explored on my CsharpDataVis page (under construction). - Refactor legend (#388) to be a plottable (or some new type of plottable-like object). None of the user-facing methods will change. This will make it easier to implement different legends or let users create their own legends.
- Refactor axis and ticks to be their own plottables. This will do a better job to encapsulate tick code, and offer a means to create experimental tick systems (#394). It will also pave the way for multiple axis support such as dual-Y-axes (#180).
- Make plottable an
IPlottable - Rename all plottables (ouch):
PlottableSignal->Plottable.Signal - create a benchmarking/testing app for the user controls that uses a timer to zoom and pan
- refactor internal messaging (between
Plotmethods andPlottableobjects) to use style objects instead of long lists of arguments (originally discussed in Added higlightable scatter plot #415) - create a way to add bitmaps to the plot or figure. Make it possible to use a bitmap as an axis label (Allowing images as plot/axis labels? #446)
- modify website to add warning when viewing old cookbooks (add warning to old cookbook pages #435)
- refactor how mouse hover works to allow "show value under cursor" or "show trace under cursor" (create "plottable under mouse" demo #471)
- Consider adding "show value under cursor" support to scatter plots (Signal plot support for "show value nearest cursor" #548, Value indicator on hover #535)
- Create a plottable that supports Lists (or Collections) (Collection support for ScatterPlots #526)
-
ShadedDifferenceplot type (ShadedDifference - plot type to shade between two lines, changing color when inverted #583) (fill between curves cookbook demo) - Allow bar plots to display
string[]labels above the bars (bar plot value labels are wrong when yOffset is used #584)
No longer a goal
-
MakeSignalDensityBase is pretty stable these days, so I'll leave it like it isSignalDensityand pull density-specific code out ofSignalsoSignalcan stay simple and easy to extend or hack on. -
See if we can use parallel by default, then delete the non-parallel methods from plottables (Scatter, Signal, and SignalConst) optional parallel processing for Signal and SignalXY #419This will be managed plottable-by-plottable (not set using a plot-level method). -
Create static methods to aid GetLimits code. It shouldn't have to be re-implemented discretely in every plottable.This is simpler to implement in each plottable. Yes there is code duplication, but it makes plottables easier to learn from. -
Add log support to- There is a path for this one day (a central getpixel method), but for now custom labeling and user-side transformation to linear space is the best solutionTransform, magically adding log support to all plottables Logarithmic axis #207 Arbitrary non-orthogonal axis #41 support log scales #29 - ~Make render system that accepts an existing Bitmap and renders onto it. Eventual goal is to not hold bitmaps in memory in ScottPlot. Ultimate goal is to remove system.drawing dependency.~~ This is not a good design. Primary render components are fixed, so they don't need to be in a list. The core of this request was being able to customize axes, and those are now in a list.
-
Chart control (#358) -- ScatterList with a good demo will solve this taskFormsChartwould be an alternative toFormsPlotwhich presents a chart-style interface more suitable for data logging applications. - Finance Control -
the general purpose chart control (too much distraction. There are good finance charting libraries out there, so people wanting that should use those.FormsPlotandWpfPlot) have many features not suitable for finance charts, and vice-versa. A dedicated control for Candlestick / OHLC data could be really useful. Mouse interaction could be simplified for zooming around and reporting financial data under the mouse. -
make a much better financial plot demo Financial plots with growing data #403 -
add show value on hover (or show value on click) to the user control right-click menu (Interactive way of displaying specific points on line plot #465)this should be done by the user and demonstrated in a demo app -
Create an easy way to customize default font globally (Custom Fonts #536)there are only a few things that have fonts, and they should be configured individually -
Support subplots with different dimensions (Setting custom subplot size #569)phase-out support for multi-plots
Still a goal
- Refactor markers (#386) to be classes instead of defined in an enum. Markers will implement
IMarker, live inScottPlot.Markers, markers have the ability to draw themselves. This makes it easy to switch between markers and even create custom markers that work for all plot types without modifying any ScottPlot code. - Add a right-click menu to WpfPlot (like FormsPlot's)
- 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 #395, #403
- Use design-time configurable properties of controls (use design-time properties for FormsPlot #455) instead of relying entirely on
Configure() - Turn
Toolsstatic class into aToolsnamespace with smaller static classes - figure out how to implement better shared axes in user controls mouse-interactive plots with shared axes #399, Cannot show multiplot in a Winform window #429
- make it easier to reset the plot by creating
Plot.Reset()(Plot.Reset() #407) - add "view source code" button to all demos (add "view source code" button to all demos #434)
- heatmaps (Heatmaps (Categorized and Continuous) #420, Heatmap clean tree #441, Heatmap improvements #458, Beginnings of heatmaps #424, Heatmap areas not equal #482, Checklist for more heatmap features #457) and vector fields (Vector fields #438, Vector fields #439) are mostly done but need finishing
- Improve WPF Performance with BitmapSource (Improve WPF Performance with BitmapSource #522)
- Add print and print preview to user control right click menus (How to print a ScottPlot in WinForms #524)
- Use delegate and/or timer to automatically render after plottables are added (Automatic render after a plottable is added? #525)
- Add options to customize location of L-shaped scale bar (L-shaped scalebar #363)
- Use a
Configurationclass (not aConfigure()method) to customize control settings (user control configuration object #547) - Add minRenderIndex and maxRenderIndex to scatter plots (Scatter plots should support max/min render index #566)
- Extend the legend to support horizontal orientation or columns (Arrange legend items horizontally (instead of stacked vertically) #580)
- create MVVM control demo (MVVM pattern. #633)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels