ScottPlot Versions Save

Interactive plotting library for .NET

5.0.32

1 week ago
  • Image: Added support support conversion to/from pixel value arrays to facilitate differential image analysis and testing (#3748, #3727)
  • Layout: Improve measurement of vertical axis tick labels (#3736) @ebarnard
  • Annotation: Improved positioning of annotations containing many lines (#3749, #3700) @LerkLin
  • Label: Significantly improved precision of single and multi-line text measurement and alignment (#3700)
  • Axis Line: Set default line width to 1 which also improved default appearance of crosshair (#3752) @fdesordi
  • Rendering: Copy the plottable list inside the render loop to facilitate plottable list modification mid-render (#3753) @ZSYMAX
  • Controls: Exposed ZoomRectangle.LineStyle setter to support advanced customization of middle-click-drag zoom rectangle (#3754) @Graat
  • Markers: Separate LineColor, LineWidth, etc. from OutlineColor, OutlineWidth, etc. to allow separate customization of line-based vs. fill-based marker shapes (#3755, #3716) @CD-SailingPerf
  • Legend: Added TightHorizontalWrapping flag to allow items in horizontally oriented legends to wrap without aligning to columns (#3758) @MCF

5.0.31

2 weeks ago
  • Arrow: Refactored the arrow system to support multiple arrow types including user-provided ones (#3745, #3697)
  • Color: Colors can be created from System.Drawing colors with ScottPlot.Color.FromColor(System.Drawing.Color.Blue) (#3745)
  • Signal and SignalXY: Added YScale parameter to display data vertically scaled by the specified fraction (#3711, #3708) @feichti92
  • Generate: Added ConsecutiveHours(), ConsecutiveDays(), ConsecutiveWeekdays(), to replace Generate.DateTime methods (#3721)

5.0.30

2 weeks ago
  • Bar: Set default line width to 1 so error bars are visible without requiring line customization (#3741) @Kareltje1980
  • Controls: Added a Interaction.ChangeOpposingAxesTogether flag to enable mouse actions to one axis to be applied to all axes with the same orientation (#3729) @rubenslkirchner
  • DataLogger: Remove requirement for new data points to contain ascending X values (#3737) @TenebrosFR
  • RandomWalk2D: Created ScottPlot.DataGenerators.RandomWalk2D for easily generating 2D random data with randomly changing velocity
  • Ticks: Improve tick distribution by using the TickLabelStyle font size to evaluate maximum tick label size (#3736) @ebarnard

5.0.29

2 weeks ago
  • Axes: Added a Plot.Axes.ContinuouslyAutoscale flag useful for plots containing continuously updating data (#3732) @rubenslkirchner
  • DataStreamer: Improved axis limit management behavior (#3732) @rubenslkirchner
  • Plot: Improved CoordinateRect() support for inverted axes (#3731) @Fokatu
  • Grid: Improved behavior of MajorLineWidth property
  • Cookbook: Demonstrate grid alignment with non-standard axes (#3714) @MichaelKuelshammer
  • Demo: Improved strategy for axis limit copying in the shared axis demo (#3729) @rubenslkirchner

5.0.28

2 weeks ago
  • Marker: Refactored marker system to support improved styling and the ability to use custom markers (#3716, #3141)
  • Interpolation: Improved control points for the first and last points of an interpolated cubic Bézier spline (#3717) @drolevar
  • FillY: Improved default line style (#3726, #3723) @SebastianDirks @Fruchtzwerg94
  • Plot: Added MoveToFront() and MoveToBack() to control the order plottables are rendered
  • Scatter: Disable marker outline visibility by default (#3720)
  • Markers: Disable rendering of lines when LineWidth is 0 (#3720)
  • Scatter: Added support for filling above and below the curve (#3318, #3380) @xichaoqiang @Diddlik @slotinvo
  • DataStreamer: Added ContinuouslyAutoscale flag to allow the vertical range to always tightly fit the data (#3561) @hazenjaqdx3 @zhhding @Xhichn
  • Markers: Added FillOutline flag to make drawing lines on filled markers an opt-in feature

5.0.27

3 weeks ago
  • Signal: Corrected floating point error that caused points to be dropped in rare conditions (#3665) @mjazd
  • DataStreamer: Added an optional argument to ViewWipeRight() that sets the fraction of oldest data to hide (#3668) @mloppnow
  • Label: Refactored plottables to use consistently named properties. Properties such as plottable.Label.FontColor are now plottable.Label.FontColor, or plottable.LabelStyle.FontColor. Referencing obsolete property names yield build errors with messages that indicate names of the new properties to use. (#3658, #3666)
  • Plottables: Styling objects LabelStyle, LineStyle, MarkerStyle, etc. are now readonly. Their contents may be set, and most plottables expose shortcuts to their properties. (#3658, #3666)
  • Plot: Added RenderInMemory() (alias for GetImage()) so users can force a render as part of their startup process (#3674) Boris
  • Ticks: improve appearance of rotated multiline tick labels (#3673) @aespitia
  • Demo: Add an example window where the legend is displayed outside the plot control (#3672, #3635) @mikeKuester @Graat
  • Demo: Fix mouse tracking logic to improve behavior of the multi-series mouseover demo (#3680, #3684) @jamaa @Graat
  • Ticks: Refined tick label measurement for improved tick spacing (#3689)
  • Legend: Added many additional customization options and support for multiple shapes (#3689)
  • Legend: Text appearing in the legend for many plot types has been renamed from Label to LegendText (#3689)
  • Rendering: Added Plot.GetSvgXml() so plots can create SVG images in memory without saving to disk (#3694) @aespitia
  • Bar: Improved alignment of value labels on horizontal bar charts (#3698) @aespitia
  • Legend: Created a LegendPanel to allow legends to be displayed outside the data area (#3672, #3635) @Graat @mikeKuester
  • Axis: Prevent left axis from appearing if no plottables use it (#3637) @jpgarza93
  • Label: Added BorderRadius to support backgrounds and outlines with rounded edges (#3659)
  • Axis Rules: Changed behavior of axis rules to reduce reliance on previous renders (#3674, #1966, #3547)
  • Blazor: Numerous improvements to the Blazor cookbook (#3667) @KroMignon
  • Finance: Improve support for DateTime candlesticks before 1900 where OADate is negative (#3678)
  • Label: Added ability to separately control background vs. text Anti-Aliasing (#3686)
  • Ticks: Use system CultureInfo to generate numeric tick labels (#3688, #3687) @xantiva @mikeKuester
  • Plottables: Made all Render() methods virtual void to facilitate advanced customization (#3693) @sdhongjun
  • Function: Improve function plot performance by only calculating visible range (#3703) @Matthew-Chidlow

5.0.26

4 weeks ago
  • Function: Improved autoscaling behavior and respect for user-defined horizontal ranges (#3618) @Matthew-Chidlow
  • Function: Exposed MinX and MaxX to allow users to restrict display to a horizontal range (#3595, #3603) @Matthew-Chidlow @Dibyanshuaman
  • Axis Lines: Added ExcludeFromLegend so text can be added to axis line labels without appearing in the legend (#3612) @MCF
  • WPF: Added GetPlotPixelPosition() for getting mouse position relative to the figure (#3622) @KroMignon
  • Scatter: Upgraded the default smooth behavior to use cubic spline interpolation and exposed SmoothTension (#3623, #3606, #3274, #3566, #3629) @drolevar
  • Vector Field: Added a new plot type to display a collection of rooted vectors (#3625, #3626, #3632, #3630, #3631) @bclehmann
  • AxisLine: Improve appearance in of the key displayed in the legend (#3627, #3613) @MCF
  • Crosshair: Expose VerticalLine and HorizontalLine for to allow axis-specific customization (#3638) @Fruchtzwerg94 @heartacker
  • AxisLine: Added properties for faster styling including an optional TextAlignment setting (#3640, #3624) @MCF
  • Axes: Improved autoscaling support behavior for plots where nonstandard axes are in use (#3641, #3637) @KroMignon @jpgarza93
  • WinUI: Added automatic display scaling detection and correction (#3642) @PZidlik
  • Bar: Added a CenterLabel flag to cause value labels to be displayed centered within a bar (#3391) @tibormarchynzoom
  • FormsPlot: Allow plots to persist through Show() and Close() events (#3643, #3589) @CodeBehemoth @bwedding @Kruno313
  • Callout: New plot type that displays text with an arrow that points to a location on the plot (#3650, #3654) @NicolasLairNET
  • Cookbook: Simplified function recipes to use static methods (#3656, #3655) @abdul-muyeed
  • Demo: Created a WPF demo application to document WPF-specific topics like display scaling (#3585, #3622) @KroMignon @MagicFawkes
  • Blazor: Fixed issue causing the ScottPlot.Blazor package to install the SkiaSharp WinForms control (#3621) @angelofb
  • ScottPlot 4 Security: Use System.Drawing.Common version 4.7.2 to address CVE-2021-26701
  • ScottPlot 4 Package: Target supported versions of .NET Framework (4.6.2, 4.7.2, and 4.8) and .NET (6.0 and 8.0)

5.0.25

1 month ago
  • NuGet: Use snupkg format to include debug symbols (#3496)
  • Scatter: Fixed indexing error affecting GetNearest() (#3616) @Matthew-Chidlow @SongPing
  • Generate: Exposed a static RandomWalker instance for easily generating random walk datasets

5.0.24

1 month ago
  • Ticks: Modified NumericFixedInterval to add support for inverted axes (#3567) @Alexander-png
  • Bar plot: Improved support for labels on horizontally oriented bar plots (#3546, #3520) @aespitia @yui1227
  • Axis: Added new axis rules for edge locking, center locking, and tick snapping (#3547) @BrianAtZetica
  • SignalXY: Added GetNearest() for locating the data point nearest the cursor (#3550) @endreew
  • Demo: Added demonstration for draggable SignalXY plots which respond to the cursor (#3550) @endreew
  • Legend: Do not display plottables where IsVisible is false (#3552, #3545, #3541) @KroMignon, @blahetal, @pkstrsk
  • Annotation: Improve positioning so it is unaffected by typeface or font (#3558) @MCF
  • Controls: Improve render artifacts on platforms that allow concurrent rendering and UI manipulation (#3559, #3557) @chjrom @Limula-PMA
  • Controls: Improve behavior of interactions started outside the plot area (#3571, #3543) @bwedding @pkstrsk
  • Label: Prevent rendering borders when line width is zero (#3572, #3538) @bwedding
  • Scatter: Added support for NaN values to display gaps in the line (#3577, #3276) @drolevar @Hub3r
  • DataLogger: Added support for NaN values to display gaps in the line (#3577) @drolevar
  • Finance: OHLC plots now have a Sequential mode (like candlestick plots) for displaying data without gaps (#3590) @oktrue
  • Plot: Added optional arguments to GetCoordinateRect() to support non-standard axes (#3591) @oktrue
  • Axes: Added optional arguments to Plot.Axes.AutoScale() to add support for nonstandard axes (#3592)
  • Axis Rules: Improved Plot.Axes.SquareUnits() to support inverted axes (#3592) @VisMotrix
  • WinForms: Improve FormsPlot disposal so the control displays properly when re-launched (#3593, #3589) @bwedding @Kruno313
  • Signal: Added support for inverted horizontal axes (#3594) @Excustic
  • Axes: New helper methods Plot.Axes.InvertX(), Plot.Axes.RectifyX(), and similar for Y (#3594)
  • Rendering: Improved performance for plot types with many lines (#3601) @drolevar
  • Function Plot: Improve support for functions with limited X ranges (#3595, #3603) @Dibyanshuaman @Matthew-Chidlow
  • Controls: All controls now include Reset() overloads for resetting or replacing the Plot (#3604, #3353) @aniketkumar7 @jon-rizzo
  • Scatter: The Smooth property now allows points to be connected with smooth lines (#3606, #3274, #3566) @bjschwarz @ja1234567 @bwedding @CBrauer
  • Layout: Added logic to reduce the size of axes which are visible but not used by any plottable (#3608)
  • Colorbar: Improved positioning and support for adding multiple colorbars to plots (#3294, #3560, #3586) @NateEbling @mawbydp @hnMel
  • Colorbar: Added a Label which users can customize to display an optional title (#3611) @mawbydp
  • SignalXY: Added support for markers and marker styling (#3602, #3609) @Giviruk
  • Scatter: Added support for MinRenderIndex and MaxRenderIndex to limit display to a portion of the data (#3614, #3308) @wellsw

5.0.23

1 month ago
  • Plot: Added ShowLegend() overload that does not override the current Orientation (#3450) @aespitia
  • Grid: The standard grid can be accessed via Plot.Grid instead of GetDefaultGrid()
  • Style: Plot.Style.ColorLegend() is deprecated. Access Plot.Legend properties directly as seen in the cookbook.
  • Style: Plot.Style.ColorAxes() has moved to Plot.Axes.Color()
  • Style: Plot.Style.AxisFrame() has moved to Plot.Axes.Frame()
  • Style: Plot.Style.SetBestFonts() has moved to Plot.Font.Automatic()
  • Grid: Added Plot.Grid with axis-specific styling options as seen in the cookbook (#3291, #3293) @bjschwarz, @PaxITIS
  • SignalXY: Fixed a bug where the final line segment was not drawn (#3495, #3423) @MareMare @mjazd
  • SignalXY: Improved support for inverted vertical axes (#3495) @MareMare
  • Controls: Ignore mouse wheel zooming if a zoom rectangle is being drawn (#3498) @BrianAtZetica
  • Controls: Improve axis lock behavior when dragging the mouse on a control (#3498) @BrianAtZetica
  • Heatmap: Added Opacity and AlphaMap properties to enhance transparency customization (#3499, #3349) @BrianAtZetica
  • Heatmap: Intensity values that are double.NaN are now displayed as transparent cells (#3499, #3349) @BrianAtZetica
  • Text: Added an OffsetX and OffsetY properties for adjusting text position in pixel units (#3506) @jamaa
  • Demo: Added a demonstration window for highlight the point nearest the cursor across multiple scatter plots (#3507, #3503) @jamaa @RubensMigliore
  • Polygon: Improved automatic axis limit detection of polygons (#3501) @drphobos
  • Annotation: New plot type for adding text labels aligned to the data area which are always visible (#3510, #3356) @dlampa
  • Ticks: Added MinimumTickSpacing, TickDensity, and TargetTickCount properties to the automatic tick generator (see Cookbook)
  • Avalonia: Fixed transparent background issue introduced in the previous version (#3502, #3516) @chjrom @MrOldOwl @kebox7
  • Rendering: Improved canvas state management to prevent duplicate restoration calls (#3527, #3523, #3528) @BrianAtZetica @chjrom
  • Signal: Improved performance of large signal plots when zoomed in (#3530, #3229) @minjjKang