Skip to content

Releases: ScottPlot/ScottPlot

ScottPlot 5.0.45

13 Nov 00:29
Compare
Choose a tag to compare
  • Candlestick: Improved performance for plots with large numbers of candles less than one pixel wide (#4483) @quantfreedom @VladislavPustovarov
  • Blazor: Added UI event handlers with names consistent with those of other controls (#4480) @Saklut
  • SignalConst: Improve automatic axis limit detection when X and Y data offsets are used (#4485) @matej-mnoucek
  • Controls: Improve interactivity behavior by resetting drag events when interactivity is disabled (#4481) @hljlishen
  • SignalConst: Deprecated the SignalConst type in favor of a Signal with a SignalConstSource data source (#4492)
  • Signal: Refactored multiple signal plot and data source types for improved performance, increased customization, and better consistency (#4492) @StendProg
  • Text: Added a static LabelStyle.RTLSupport flag to enable support for right-to-left (RTL) languages (#4500, #4306) @StendProg @moranmono

ScottPlot 5.0.44

09 Nov 18:23
Compare
Choose a tag to compare
  • Rendering: Prevent inversion of data area for extremely small plots (#3607)
  • Generate: Created AddSin() and AddSinInPlace() methods to facilitate test data generation (#3682)
  • FormsPlot: Improved the Visual Studio design time experience for users working on .NET Framework projects (#4425, #4362) @CoderPM2011
  • CoordinateRange: Improve equality checking for infinite spans with reversed limits (#4441, #4436) @sunefred
  • SVG: Significantly reduced the size of exported XML by preventing duplicate renders (#4441, #4436) @sunefred
  • LineStyle: Added a HandDrawn flag with customizable HandDrawnJitter and HandDrawnSegmentLength to create XKCD-style plots (#4435, #3239) @sdpenner
  • SignalConst: Exposed Data so users may access offset configuration settings (#4440, #4253) @matej-mnoucek
  • VectorField: Added MaximumArrowLength property to allow arrow lengths to be customized (#3763) @hnMel
  • Signal: Reduced render artifacts for high density overlapping data by reducing pixel overlap (#4050, #3665) @StendProg
  • Label: Added border radius properties to customize corner curvature of labels and plottables with label styles (#4099)
  • Controls: Added LostFocusAction to abort mouse drags if they are interrupted by Alt+Tab or other events that lose window focus (#4103) @Max-i-m
  • Polygon: Improved performance and reduced anti-alias artifacts by preventing multiple overlapping drawings of identical lines (#4141) @HandsomeGoldenKnight
  • Title: Added FullFigureCenter flag to allow titles to be centered in the figure instead of over the data area (#4455, #364) @jaguarxii
  • OHLC: Added check in initializer to force valid high/low range state (#4454) @CBrauer
  • WpfPlot: Re-implemented GetPlotPixelPosition() and GetCurrentPlotPixelPosition() (#4214, #3622) @wellsw @KroMignon
  • DataLogger: Narrowed the underlying data type from IList<Coordinates> to List<Coordinates> to allow RemoveRange() as seen in the cookbook (#4460) @Fruchtzwerg94
  • Maui: Improve visual appearance of plots during panning (#4416, #4417, #4447) @King-Taz @KosmosWerner
  • WinUI: Improved support for Windows platforms by upgrading to the latest SkiaSharp dependency and building for windows10.0.19041 (#4258) @ArchieCoder @ProgrammerGuy76 @agneszitte @AzureGulf @Treppon
  • Callout: Improved automatic axis limit detection (#4358) @endeffects
  • Axes: Added SquareUnits(false) overload to allow restoring default axis scaling behavior (#4366) @cvdevol
  • Axis Lines: Add Minimum and Maximum properties to limit the size of the line along its axis (#4368) @nRoger-Env
  • Axes: Added Plot.Axes.NumericTicksButton() to revert changes made by DateTimeTicksBottom() (#4438) @Cassar17
  • Colormap: Added GetImage() to return a ScottPlot.Image of custom dimensions which may be returned as a byte array or saved to disk (#4371)
  • Tick Generator: Added DateTimeManual for placing ticks manually on DateTime axes without having to use ToOADate() (#4383)
  • Grid: Added Color, LineWidth, and LinePattern properties for quickly setting major line styles of primary X and Y axes grid lines (#4384)
  • DataLogger: Exposed HasNewData to allow signaling that new renders are required after manually editing logger data (#4470, #4460) @Fruchtzwerg94
  • Marker: Improved support for filled markers with opt-in outlines (#4387)
  • Generate: Added RangeWithStep() and RangeWithCount() as more explicit alternatives to the ambiguously named Range() method
  • Scatter: Filled areas previously only respected OffsetX but now respect OffsetY too (#4433)
  • Controls: Modified MouseDragZoom to expose sensitivity properties to improve click-drag experiments for different platforms (#4443, #4416) @King-Taz @KosmosWerner
  • Controls: Improved mouse interactivity behavior for plots with inverted axes (#4471, #4110) @wi-fr
  • Population: Use deterministic randomness for horizontal spread of makers to support pixel perfect reproducibility (#4477)

ScottPlot 5.0.43

03 Nov 22:14
Compare
Choose a tag to compare
  • UserInputProcessor: Simplified how axis locking is achieved by adding horizontal and vertical arguments to LeftClickDragPan() and RightClickDragZoom()
  • Maui: Improved deployment pipeline so the latest ScottPlot.Maui package is always available on NuGet (#1391) @KosmosWerner @King-Taz @cosmicDustOfLightLength
  • Candlestick Plot: Exposed Data for easier access to underlying OHLC candle data (#4385) @quantfreedom
  • Maui: Improved cursor-driven pan and zoom on Desktop platform targets (#4417, #4416) @KosmosWerner @King-Taz
  • Candlestick Plot: Improved visibility of candles with zero price movement (#3337) @Lyakabynka @bukowa
  • Ticks: Added an experimental FinancialTickGenerator for generating DateTime ticks from unevenly-spaced time data (#4385)
  • Financial Charting: Added experimental FinancialTimeAxis plottable as an alternative to using custom axes or tick generators (#4385) @quantfreedom @vladislavpweetsoft
  • Triangular Axis: Users may now Add.TriangularAxis() and use its methods to get Cartesian coordinates from points in triangular space (#4421, #4413, #4424) @manaruto
  • Bar: Exposed Rect, ErrorLines, and AxisLimits properties (#4423) @tiger2014
  • Axes: SquareUnits() now uses SquareZoomOut for console apps and SquarePreserveX for interactive apps (#4422) @King-Taz @KosmosWerner
  • Bar: Improved support for bat plots with custom hatch patterns (#3386)
  • Floating Axis: New plot type for displaying axes anywhere inside the data area (#3377) @ZTaiIT1025
  • Bar: Improved behavior of horizontal bar plots with the CenterLabel flag enabled (#3533) @TheFizz
  • Generate: added Sigmoidal() method for creating sample data with a sigmoidal shape

ScottPlot 5.0.42

30 Oct 00:37
Compare
Choose a tag to compare
  • Controls: Refactor to allow the user input processor to function as IPlotControl.Reset() changes the underlying Plot (#4404) @Or8e4m4n

ScottPlot 5.0.41

28 Oct 02:46
Compare
Choose a tag to compare
  • Controls: marked Interaction as Obsolete to encourage use of the newer UserInputProcessor documented in all the demo apps. Users may still activate the old system by calling myPlotControl.Interaction.Enable() (#4322, #4224, #3186, #4053)
  • Ticks: Improved automatic tick generation for axes of extremely small plots (#4353, #4354) @StendProg @Cassar17
  • CoordinateRange: Added a Center property to return the value halfway between the range boundary values (#4316, #4357) @idotta
  • Multiplot: Improve support for advanced layouts and add examples to cookbook (#4345)
  • Colormap: Added Default property to provide quick access to a customizable standard colormap (defaults to MellowRainbow)
  • Palette: Added Default property to provide quick access to a customizable standard Palette (defaults to Category10)
  • Bar: Use LineStyle and FillStyle similar to other plottables and deprecate old property names
  • Histogram: Refactored to simplify creation of creating probability curves and cumulative probability histograms (#4287, #4367)
  • Colormap: Refactor all ScottPlot.Colormaps to favor composition over inheritance and add extension methods to IColormap (#4248)
  • WinUI: Improve support for .NET 8 platform targets (#4288, #4374) @vilgotf
  • Scatter: Made all default strategies public to facilitate connecting line customization (#4346)
  • Interaction: Added DoubleLeftClickBenchmark(), LeftClickDragPan(), and RightClickDragZoom() helper methods for toggling default behavior (#4379)
  • Finance: Added Add.BackgroundText() methods to simplify the process of adding stock symbol information (#4396, #4395, #4385) @quantfreedom
  • Finance: Improve support for List<OHLC> and OHLC[] data types (#4397)
  • Generate: Added Generate.Financial.OHLCsByMinute() to simplify creation of random financial data (#4397)
  • DataLogger: Add Clear() to the data logging plottable ands its corresponding data source (#4377) @h135558
  • Cookbook: Improved recipes, reorganized chapters, and added platform switching to the website (#4392)

ScottPlot 5.0.40

16 Oct 22:02
Compare
Choose a tag to compare
  • DataLogger: Added Add() overloads to be consistent the original DataLogger API (#4243, #4114) @drolevar @jpgarza93
  • Fonts: Improve typeface caching to significantly improve Avalonia performance on Linux (#3439, #4250) @kebox7
  • Generate: Improved RandomNumbers() to include lower boundary as described in XML docs (#4251, #4252) @aespitia @LeaFrock @ArchieCoder
  • LinePattern: Added Name property and added support for custom patterns (#4275, #4289) @CoderPM2011
  • DataSources: Created IDataSource to standardize and simplify data access, render index management, and pixel/coordinate conversion (#3807, #4270) @RFBomb @StendProg
  • LinePlot: Added CoordinateLine property (#4277, #4274) @aespitia
  • Pie: Improved respect for LineStyle customizations (#7278)
  • Pie: Improved automatic axis limit behavior for pie charts with internal slice labels (#7278)
  • Pie: Slices now have distinct Label and LegendText properties (#3295, #4280) @LeaFrock @sterenas @Martin12350
  • SignalXY: Fixed bug introduced in the last version that caused off-screen data to throw an ascending value exception (#4261, #4286) @RFBomb @StendProg
  • Controls: Added strong naming by signing assemblies for the WPF, Maui, and Eto controls (#4295) @RFBomb
  • OpenGL: Improve behavior of plots when grid lines are rendered beneath plottables (#4298) @StendProg
  • OpenGL: Improve support for OpenGL controls on modern .NET using platform-specific OpenTK versions (#4301) @StendProg
  • Coxcomb: Improved first slice orientation consistency (#4304, #4305) @johndoh
  • Grid: Improved alternating fill grid appearance for live and interactive graphs (#4302, #4307) @StendProg @bradcb212
  • SignalXY: Fixed bug causing plots with inverted horizontal axes to crash under specific conditions (#4313, #4315) @StendProg @lguelat
  • CoordinateRange: Refactored to improve support for inverted ranges (#4316) @CoderPM2011
  • Axes: Added a Plot.Axes.TightMargins() shortcut for setting autoscale margins to tightly fit the data
  • ContourLines: New plot type for displaying lines that mark points of equal elevation given a collection of 3D points (#4296, #2330, #3795, #4326) @jon-rizzo @StendProg
  • Maui: Improved the .NET MAUI ScottPlot control and added quickstart documentation to the website (#4320, #4023, #4013, #4342) @KosmosWerner @ByteSore
  • Radar: Improved rotational direction of labels (#4321, #4310) @CoderPM2011 @bry-decelles
  • Axes: Added Plot.Axes.MarginsX() and Plot.Axes.MarginsY() for changing margins in a single axis without changing the other (#4246)
  • Colormap: Added Colormap.FromColors() to generate colormaps using interpolated gradients between a user defined collection of colors (#4247, #4324)
  • Colormap: added MellowRainbow similar to Jet and Turbo but with mellow tones to improve appearance of thin lines on a white background (#4325)
  • ScaleBar: New plot type for communicating scale as a concise alternative to the axis frame (#4319, #4337, #4329) @CoderPM2011
  • PixelLine: Added Center property (#4335, #4318) @brokoli777
  • MultiPlot: New class for creating composite figures containing multiple distinct Plot figures (#3948)
  • Plot: Deprecated GetImageHtml() in favor of GetPngHtml() and GetSvgHtml() (#4347)

ScottPlot 5.0.39

09 Sep 01:09
Compare
Choose a tag to compare
  • Angle: Added support for common arithmetic operators
  • PolarCoordinates: Added FromCartesian() and FromCartesian() overloads to facilitate conversion between polar and Cartesian space (#4211) @CoderPM2011
  • Pie: Added Rotation property (#4211) @CoderPM2011
  • Pie: Improved label alignment (#4211) @CoderPM2011
  • Pie: First slice now starts vertically (-90 degrees) instead of to the right (0 degrees) (#4211) @CoderPM2011
  • Generate: Random seed uses System.Random.Shared on .NET platforms where it is available (#4217) @LeaFrock
  • Axes: Added ClipLabel option to prevent long labels from overlapping on very small plots (#4219) @drolevar
  • Plot: Improved performance when adding new plot objects by reducing complexity of color palette sampling (#4218) @0xfded @StendProg
  • Colormap: Added GetColor() overload to get color of an item in a collection with an option to sample from a range of the colormap
  • Markers: Added optional Colormap so marker colors can be sampled from a colormap instead of assigned manually (#4143)
  • Angle: Added FromFraction() to produce angles represented by a fraction around the unit circle (#4208)
  • Color: Added constructor overloads to create colors from SKColor and System.Drawing.Color (#4209)
  • Axes: Added SetSpanX() and SetSpanY() for defining axis range size without changing the center position (#4221)

ScottPlot 5.0.38

02 Sep 18:55
Compare
Choose a tag to compare
  • DataLogger: Merged in numerous additional features (optional circular buffer, X and Y offset, etc.) from the experimental DataLogger (#4085, #4114) @drolevar
  • SVG: Improved correctness of exported SVG files to overcome a SkiaSharp bug that sometimes results in XML missing a closing tag (#4104, #4121) @KroMignon @aespitia @bclehmann @DDiggs91
  • Generate: Added Range() to create a sequence of values between two numbers (#4122, #4119, #4179) @KroMignon @StendProg
  • Rendering: Improve behavior of plots using custom scale factors in situations of repeated renders (#4125) @BrianAtZetica
  • Palette: Improved behavior of automatic color selection for new plottables added to the plot (#4105)
  • Color: Added overload to allow constructing colors from hex strings (#4170, #4165) @aespitia @KroMignon @kebox7
  • WinUI: Improved support and documentation for applications built using Uno Platform (#4123) @agneszitte
  • Color: Added Hue, Saturation, and Luminance properties
  • Colormap: Added Colormap.GetColormaps() to allow iterating over all available colormaps
  • Colormap: Added Colormap.GetImage() to generate a gradient image using a given colormap
  • Coordinates: Added Position and Coordinates properties (#4185) @blouflashdb
  • Signal: Added AlwaysUseLowDensityMode for improved anti-aliased rendering in static plots (#4153)
  • Plot: Improved default ToString() implementation for the object returned when saving image files (#4154)
  • Plot: Added Save() overload which detects file format from filename extension (#4164)
  • Coordinates: Added Coordinates.Zip() for creating a Coordinates[] from distinct xs[] and ys[] arrays.
  • Lollipop: New plot type that displays values with a stem and a marker similar to a bar graph but with less visual clutter (#4193, #4183) @CoderPM2011
  • Polar Axis: Added Rotation property to rotate the axis and coordinates it returns
  • Polar Axis: Added the ability to customize spoke label text (#4188)
  • Polar Axis: Added a SetSpokes() overload that accepts string[] to create new spokes and set their label text automatically
  • Polar Axis: Replaced RegenerateSpokes() and RegenerateCircles() with SetSpokes() and SetCircles() (#4207)
  • Grid: Added support for fill colors to highlight spans between pairs of major grid lines (#4201, #4022) @CoderPM2011 @seeingistrue
  • AxisSpan: Added IsUnderMouse() to improve API naming consistency with AxisLine (#4150)
  • AxisLimits: Added Contains() to allow quick checking whether a point is contained by the boundaries of the axis limits (#4161)
  • Radar: Refactored to use a PolarAxis to handle spoke and tick management and translation between polar and Cartesian space (#4207, #4187, #4186, #4055)
  • Controls: Made IPlotControl.Menu nullable so users creating their own controls are not required to create a menu system (#4203) @kebox7

ScottPlot 5.0.37

30 Jul 01:33
Compare
Choose a tag to compare
  • Controls: A new IPlotControl.UserInputProcessor has been created to replace IPlotControl.Interaction which will be deprecated in a future release. The new system supports arbitrary inputs (not limited to mouse actions and key presses), offers extended ability to inject highly customizable ordered plot manipulation logic that respond to streamed inputs, and has been designed to facilitate automated UI testing. Set IPlotControl.UserInputProcessor.IsEnabled to true to opt-in to this new event processor. (#4053, #3186, #3622)
  • Signal and SignalXY: Improve data source GetNearestX() accuracy (#4019) @StendProg
  • Maui: Created a ScottPlot.Maui.MauiPlot control to provide interactive plots in .NET Maui applications (#4013) @ByteSore
  • Style: Added Plot.GetStyle() and Plot.SetStyle() for applying and customizing styles in the ScottPlot.PlotStyles namespace (#4025, #3955, #4037) @StendProg @kebox7
  • AxisLimits: Improved accuracy and performance of WithZoom() (#4041) @idotta
  • Documentation: Added automatically generated API documentation to the website (#4040, #3822)
  • Font: Improved documentation and testing for plot objects (like Legends) that use custom typefaces (#3830, #3825, #4060, #4043, #4057) @lasooch @kebox7
  • Label: ScottPlot.Label has been renamed to ScottPlot.LabelStyle to better signal its purpose is to hold styling information rather than store text
  • Label: Improved support for custom horizontal alignment in multiline strings (#4045, #3958, #3859) @karlipl
  • Fonts: Improve performance when automatic best font detection is enabled (#4049) @zxy874175242
  • Controls: Added autoscale to default context menu (#4053)
  • Axes: A polar plot axis can now be added with myPlot.Add.PolarAxis() and customized as seen in the cookbook (#4055, #3939) @CoderPM2011
  • Axis lines and spans: Added EnableAutoscale flag to allow plottables to be ignored when Plot.Axes.AutoScale() is called (#4069, #4067) @KroMignon @andresod
  • SignalConst: Improved support for custom legend text (#4081, #4082) @KroMignon @fanshuxian
  • SignalConst: Improve accuracy of the first point in low density mode (#4082, #4083, #4086, #4083) @StendProg @KroMignon
  • SignalConst: Allowed markers to become visible by setting their shape without requiring users to define a non-zero size (#4082) @KroMignon
  • Grid: Improved performance by reducing unnecessary allocations for ticks of invisible axes (#4087) @kebox7
  • Ticks: Improved behavior of the numeric fixed interval tick generator to ensure the correct lowest tick is always rendered (#4089) @epegeot
  • Ticks: Allow the numeric fixed interval tick generator interval to be defined as a double (#4090) @epegeot
  • Ticks: Add a custom tick label formatter property to the numeric fixed interval tick generator (#4090) @epegeot
  • Ticks: Improved behavior of NumericalFixedInterval to ensure the correct lowest tick is always rendered (#4089) @epegeot
  • DataStreamer: Improved support for rotated plots (#4093, #4085) @drolevar @KroMignon @Jofstera
  • Security: Removed outdated reference to System.Text.Json which contained CVE-2024-30105 (#4095, #4063) @SerTetora
  • Phaser: New plot type for displaying arrows to points in polar space (#4096, #3939) @CoderPM2011 @nilsakesson
  • PlottableAdder: Exposed Plot so users can create methods that extend Plot.Add which have access to the Plot itself (#4109, #4107) @DDiggs91
  • AxisManager: Improve AutoScale() support for inverted axes (#4110) @BrianAtZetica
  • Scatter: Added ColorPositions to allow placement of colors at specific X positions when using filled scatter plots (#4111) @CoderPM2011
  • SignalXY: Improved support for rotated plots and added support for XScale to compliment YScale (#4112, #4102) @BrianAtZetica

ScottPlot 5.0.36

29 Jun 11:29
Compare
Choose a tag to compare
  • Fonts: Made typeface caching thread-safe to improve support for multi-threaded environments (#3940) @Hawkwind250
  • Ticks: Added a custom LabelFormatter to DateTime axes which use fixed intervals (#3936) @Fruchtzwerg94
  • Fonts: Enabled sub-pixel text positioning for improved character placement (#3937) @bforlgreen
  • Axes: Improved automatic axis limit expansion for extremely large numbers (#3930) @CodeDevAM
  • Statistics: Added ScottPlot.Statistics.Descriptive methods Median() and Percentile()
  • Population: Added a new Population plot type for displaying collections of values (#3944, #3676)
  • IAxisLimitManager: Separated GetAxisLimits() into GetRangeX() and GetRangeY() for improved customization and performance (#3946) @drolevar
  • Experimental: Added Plottables.Experimental.DataStreamer2 plot type for displaying streaming data in a circular buffer (#3946) @drolevar
  • Rendering: Automatically re-render if a render invokes an event that requests it (#3952) @BrianAtZetica
  • SVG: File encoding now supports text containing UTF8 characters (#3956, #3957) @aespitia
  • Documentation: Added a sandbox .NET API project and quickstart section to the website (#3959, #3824) @aespitia
  • Color: Added ToColor() and FromColor() to simplify conversion between ScottPlot.Color and System.Drawing.Color (#3964, ##3953) @aespitia
  • Console: Saved image path can be displayed by calling myPlot.SavePng('demo.png', 600, 400).ConsoleWritePath() (#3965, #3943) @aespitia
  • Rendering: Improved sharpness of axis frames, tick marks, and grid lines by disabling anti-aliasing by default and added Plot.Axes.AntiAlias() so users can customize this behavior (#3976) @bforlgreen
  • Signal: Added support for generic data sources in read-only lists (#3978, #3942) @sdpenner
  • LinearRegression: Added overload that accepts IEnumerable<Coordinates> (#3982, #3981) @ANGADJEET @CoderPM2011
  • Colormap: Added GetColors() for generating a given number of colors evenly spaced along a colormap (#3983, #3947) @CoderPM2011
  • CoordinateLine: Added additional constructors for creating lines given a point and slope (#3987, #3986) @aalgrou
  • DataLogger: Added Clear() and ResetMinAndMaxValues() to the data logger source class (#3993, #3969) @jpgarza93
  • Controls: Improved behavior of middle-click-drag zooming over axis panels for plots using DPI scaling (#3994) @bforlgreen
  • Style: Added Plot.Axes.Hairline() to enable axis frames, tick marks, and grid lines to render 1px wide regardless of scale factor (#3995) @bforlgreen
  • Axes: Display no ticks instead of throwing an exception if automatic DateTime ticks are used with invalid ranges (#4001) @githubkau
  • SignalXY: Improve support for data sources containing zero-length arrays (#4000) @githubkau
  • CoordinateRect: Added constructor that accepts IAxes (#4008, #3985) @CoderPM2011
  • CoordinateRect: Fixed an issue that caused BottomRight to return incorrect coordinates (#4009, #3996) @CoderPM2011
  • Cookbook: Added a demonstration of stacked filled line plots (#4010, #3967) @CoderPM2011 @MarkG008
  • Benchmark: Improved text default alignment of double-click benchmark (#4014) @banncan
  • SignalXY: Improved behavior of MinRenderIndex and MaxRenderIndex (#4011) @StendProg
  • Project: Cut dependency on System.Runtime.InteropServices.RuntimeInformation (#3911) @swaitvor @chhh
  • Legend: Added IsVisible property to LegendItem to customize visibility of items in manual legends (#3931) @cataclism
  • Signal: Exposed Data property setter so users can replace the ISignalSource without resetting the plottable (#3932) @danieljfarrell @bclehmann
  • Heatmap: Exposed Intensities setter to allow users to replace heatmap data with a 2D array of a different size (#3941) @sdpenner
  • Axes: Added Plot.Axes.Link() to simplify sharing axis limits between multiple plots or plot controls (#4003)
  • Blazor: Added automatic resizing options to the in-browser cookbook (#3710, #3664) @KroMignon
  • Axis Spans: Improved visibility of extremely narrow spans (#4017, #3968) @CoderPM2011
  • Generate: Added RandomNormalNumber() that returns a single value to compliment RandomNormal() which returns a collection (#4018, #3980) @CoderPM2011
  • Axis Lines: Offset label according to the panel offset to improve appearance on multi-axis plots (#1766) @fuxinsen @mengfanmin123