ScottPlot Code Metrics
This project contains 85,434 lines (64,181 coding) across 1,009 files
Lines of Code
ScottPlot 5: 84,657 lines (63,548 coding) across 992 files
- Library: 49,945 lines (36,447 coding) across 571 files
- Tests: 8,473 lines (6,653 coding) across 93 files
- Cookbook: 11,886 lines (9,314 coding) across 92 files
- Demos: 8,188 lines (6,322 coding) across 124 files
ScottPlot5 TODOs (96)
- AvaPlot.cs:154 improve support for DPI scale detection
- AvaPlotMenu.cs:28 Copying images to the clipboard is still difficult in Avalonia
- BlazorPlotBase.cs:36 improve support for DPI scale detection
- BlazorPlotBase.cs:100 implement this in JavaScript?
- EtoPlot.cs:118 improve support for DPI scale detection
- EtoPlotMenu.cs:101 launch a pop-up window indicating if extension is invalid or save failed
- MauiPlotMenu.cs:23 ContextMenuItem copyImage
- WinUIPlot.cs:151 How do we set the cursor in WinUI?
- WinUIPlotMenu.cs:84 launch a pop-up window or otherwise inform if AppWindow is not set before using save-dialog
- WinUIPlotMenu.cs:92 launch a pop-up window indicating if extension is invalid or save failed
- ApiDocs.cs:13 improve appearance of delegates and List
- TypeName.cs:36 show the type of where possible
- DetachedLegend.cs:207 streamline this
- TradingViewForm.cs:8 make an abstraction for click-drag placement of new technical indicators
- TradingViewForm.cs:226 move this logic inside the plottable
- TradingViewForm.cs:238 use the axis to format the date using the same units as the ticks
- App.xaml.cs:70 Load state from previously suspended application
- App.xaml.cs:113 Save the application state and stop any background activity
- Extensions.cs:9 deprecate save methods in favor of Should() methods
- FontDetectionTests.cs:37 Add automatic checking, was done manually
- SourceCodeParsing.cs:87 cache source file paths and their contents for quicker searching by multiple tests
- Drawing.cs:6 obsolete methods in this class that create paints. Pass paints in to minimize allocations at render time.
- Drawing.cs:8 obsolete methods that don't take Style objects
- Fonts.cs:135 Use the ScottPlot default font. Maybe give as an input parameter?
- Fonts.cs:136 Replace unrenderable characters with "�"
- Fonts.cs:155 Signal an error somehow? Could return default font name.
- Generate.cs:186 obsolete this
- MouseDragZoom.cs:9 re-implement this being more careful about allocations
- IAxis.cs:14 don't expose this
- IAxis.cs:48 never call TickGenerator.Generate() externally
- IDataSource.cs:3 Performance of many data sources may be improved and code duplication reduced.
- IPlottable.cs:35 this should be a method GetLegendItems()
- ISignalSource.cs:63 should this be IEnumerable?
- MultiplotSharedAxisManager.cs:5 improve support for plots with non-standard axis limits
- ColorBar.cs:90 use size too
- Arrows.cs:3 use an interface to let users inject custom logic
- Plot.cs:503 https://github.com/ScottPlot/ScottPlot/issues/3660
- Plot.cs:518 https://github.com/ScottPlot/ScottPlot/issues/3660
- BarPlot.cs:15 bar plot data source?
- CandlestickPlot.cs:66 Data.GetSequentialLimits()
- DataLogger.cs:133 check the index after too?
- DataStreamer.cs:155 slide axes
- DataStreamerXY.cs:71 move this logic inside the buffer and make it more efficient
- ErrorBar.cs:5 use an errorbar source instead of so many lists
- IsoLines.cs:88 pass a CoordinateLine instead of a PixelLine
- IsoLines.cs:146 pass a CoordinateLine instead of a PixelLine
- Polygon.cs:13 replace with a generic data source
- Polygon.cs:110 make property
- Polygon.cs:116 stop using skia primitives directly
- Signal.cs:67 put GetRange in axis translator
- VectorField.cs:45 Filter out those that are off-screen? This is subtle, an arrow may be fully off-screen except for its arrowhead, if the blades are long enough.
- ArrowStyle.cs:58 account for rotation
- Axes.cs:8 these should probably be readonly and passed into the constructor
- AxisLimits.cs:26 make sure callers aren't using this when they dont have to
- AxisLimits.cs:138 obsolete all Expanded() methods and replace functionality with ExpandingAxisLimits
- BackgroundStyle.cs:26 SKImage instead?
- Bar.cs:61 something like ErrorInDirectionOfValue?
- Box.cs:59 support horizontal boxes
- CoordinateRange.cs:44 Figure out how to avoid using NotSet and NoLimits magic numbers.
- CoordinateRangeMutable.cs:3 strangle this class and replace with CoordinateRangeStruct
- CoordinateRangeMutable.cs:8 rename to MutableCoordinateRange or something
- CoordinateRangeMutable.cs:15 obsolete this
- CoordinateRangeMutable.cs:46 deprecate
- CoordinateRangeMutable.cs:62 deprecate
- CoordinateRangeMutable.cs:86 deprecate
- ExpandingAxisLimits.cs:61 Methods like Expand() should be fluent, named Expanded(), and returning this object
- FontStyle.cs:26 consider whether color really belongs here...
- IAutoScaler.cs:8 Add this so auto-scalers can provide scaling information without requiring plottable collections
- IAutoScaler.cs:21 axis-specific autoscaling can be moved out of the control class and placed somewhere in here
- IAutoScaler.cs:23 GetRecommendedAxisLimits() should return a dictionary of limits by axis,
- LabelStyle.cs:16 deprecate this and pass text into the render method
- LabelStyle.cs:74 should add padding and margin
- LabelStyle.cs:81 automatic padding support for arbitrary rotations
- LabelStyle.cs:82 automatic padding support for arbitrary rotations
- LabelStyle.cs:249 deprecate this and require a string to be passed in
- LabelStyle.cs:420 support rotation
- LinePattern.cs:8 add more preset LinePatterns
- MultiplotLayoutSnapshot.cs:11 improve support for non-primary axis limits
- OHLC.cs:10 deprecate this eventually. OHLC should be price information only.
- PixelRect.cs:237 use operator logic?
- PlotStyle.cs:75 can this be done with reflection?
- Range.cs:6 evaluate if this can be replaced with more task-specific primitives
- RenderDetails.cs:85 extend actionTimes report individual plottables, axes, etc.
- SavedImageInfo.cs:38 use a temporary file
- RenderManager.cs:170 event for when layout changes
- Descriptive.cs:127 benchmark and see if this can be optimized by not using LINQ
- Descriptive.cs:159 benchmark and see if this can be optimized by not using LINQ
- MockPlotControl.cs:24 mock menu
- FinancialTickGenerator.cs:31 add different functions for year, month and day, day, etc. based on range
- FinancialTickGenerator.cs:52 year ticks
- LabelFormatters.cs:3 Consider creating a `LabelFormatter` type or `ILabelFormatter` because we use this pattern in a lot of places.
- NumericAutomatic.cs:21 consider adding logic to make this a fraction of the width in pixels
- Centisecond.cs:22 This assumes colons as the separators, but consider (some) French-language locales use 12h30 rather than 12:30
- Decisecond.cs:18 This assumes colons as the separators, but consider (some) French-language locales use 12h30 rather than 12:30
- Millisecond.cs:18 This assumes colons as the separators, but consider (some) French-language locales use 12h30 rather than 12:30
- Year.cs:21 move this into extension methods file
Generated 11/20/2025 16:43:26