Interactive plotting library for .NET
MIT License
Bot releases are visible (Hide)
Published by swharden 9 months ago
RenderManager.EnableRendering
flag to skip render requests while performing dangerous actions in multi-threaded environments. Skipping renders compliments the PreRenderLock
event which hangs renders. See the async FAQ page for usage details. (#3213, #3095) Thanks Lumtoo and @bclehmann
FormsPlotViewer
and WpfPlotViewer
for launching interactive plots from console applications. See the Interactive Plots in Console Applications page for details. (#3212, #308) Thanks @chaojian-zhang
Add()
overloads which support X/Y pairs (#3210) Thanks @devbotas
Published by swharden 9 months ago
Published on NuGet on 2024-01-15
Sequential
property to display OHLC data without gaps (#2611, #3187) Thanks @robbyls, @mjpz, and @segeyros
Plot.Add.Rectangle()
for placing a rectangular polygon on the plotMaximumBoundary
and MinimumBoundary
correction behavior (#3191) Thanks @Milyczekpolsl
Generate.RandomWalker
class for producing an infinite amount of streaming random dataFontName
and LabelText
propertiesFonts.Detect()
now inspects all characters instead of just the first (#3184, #2746) Thanks @prime167
SetBestFont()
to apply the installed font most likely able to display characters in the label (#3184, #2746) Thanks @prime167
Plot.Style.SetBestFonts()
to apply the best font to all plot components (#3184, #2746) Thanks @prime167
GetCoordinates()
from IPlotControl
. Users can call Plot.GetCoordinates()` directly. (#3199)IManagesAxisLimits
for IPlottable
objects that manipulate axis limits at render time (#3207)Published by swharden 9 months ago
AutoScale()
is called by the renderer (#3183) Thanks @Smonze
Published by swharden 9 months ago
CoordinateRange
struct for passing ranges and CoordinateRangeMutable
for mutating them (#3170)Published by swharden 10 months ago
AreReal
property to confirm X
and Y
are finiteX
and Y
properties to compliment Position
Plot.Axes
list to encourage interaction with Plot.YAxes
and Plot.XAxes
(#3133)AddLeftAxis()
, AddRightAxis()
, etc. to simplify multi-axis creation and management (#3133)Plot.Layout.Frameless()
to hide axes and allow the data area to fill the figureColor
, LineWidth
, and MaximumMarkerSize
so users do not interact with LineStyle
and MarkerStyle
directly (#3136)Series
class for calculating statistics for time series dataLineWidth
and MarkerSize
propertiesSimpleMovingAverage
and BollingerBands
in the ScottPlot.Finance
namespace to facilitate calculation and display of technical indicators (#3137)Plot
into the Plot.Axes
class. Notable changed method names include Plot.Axes.SetLimits()
, Plot.Axes.GetLimits()
, Plot.Axes.AutoScale()
, and Plot.Axes.Margins()
(#3140)SignalSourceUInt16
to demonstrate how to plot data with custom types (#3154) Thanks @angulion
Interaction
can be used instead of Replace()
for customizing mouse actions (#3150)Menu
with Add()
and Clear()
methods to simplify context menu customization (#3150)Data.MinimumIndex
and Data.MaximumIndex
to allow for partial array rendering (#3158) Thanks @raburton
GetIndexes()
and GetValue()
to get data from a coordinate (#3165) Thanks @skn41
Published by swharden 10 months ago
AutoScaler
can now be assigned a FractionalAutoScaler
with custom properties (#3069, #3067) Thanks @arthurits
ManualItems
to allow building custom legend contentStatistics.Descriptive
class, renamed StDev()
to StandardDeviation()
, and added methods for calculating both sample and population statistics (#3071 and #3055) Thanks @arthurits
None
marker (#3075, #3057) Thanks @Gray-lab
Random()
is deprecated in favor of RandomSample()
ShowLegend()
and HideLegend()
helper methods which set Plot.Legend.IsVisible
Plot.AddMarker()
can now be used to place a single marker on the plot (#3076, #2806) Thanks @Gray-lab
Reversed()
method for creating colormaps with reversed color order (#3100) Thanks @bukkideme
ShouldBe()
method to assert the version of ScottPlot matches the expected one (#3093)TickGenerators.NumericManual
now has AddMajor()
and AddMinor()
to simplify manual tick placement (#3105, #2957) Thanks Lake
Plot.GetLegendImage()
and Plot.GetLegendSvg()
for displaying legends outside plots (#3062, #2934) Thanks @KroMignon, @lichen95, and @bclehmann
Line
plot type for creating straight lines between two points (#2915, #3109) Thanks @Gray-lab
IPlotInteraction
so users can inject their own Interaction
(#3111, #3110) Thanks @albyoo
YOffset
is used (#2949) Thanks @minjjKang
Alignment
has been renamed to Location
(#3059)RenderManager.RenderStarting
event to allow modification of plottable properties (#3077) Thanks GooBad
RenderManager.PreRenderLock
event so developers of multi-threaded applications can ensure plottables are stable at render time (#3095) Thanks @bclehmann
Plot.Layout
class for holding Frameless()
and related methods (#3106) Thanks @angulion
Published by swharden 10 months ago
Reversed()
method for creating colormaps with reversed color order (#3100) Thanks @bukkideme
ShouldBe()
method to assert the version of ScottPlot matches the expected one (#3093)Marker.horizontalBar
to compliment verticalBar
(#3101) Thanks @SerhiiMahera
Descriptive.StdErr()
for calculating standard error of the mean (#3112)Published by swharden 11 months ago
Matched
layout engine (#2881) Thanks @proplunger
DisableGrid()
and EnableGrid()
helper methods (#2947)IRenderLast
plottables can implement to draw above axes (#2998, #2993)Interaction.Disable()
and Interaction.Enable()
methods for easy control of mouse interactivityFormsPlotGL
and WpfPlotGL
distinct from FormsPlot
and WpfPlot
(#3008, #3007, #2950, #2395, #2565)Data.GetNearest()
to simplify locating the point nearest the cursor (#3026, #3048) Thanks @JurasskPark and @CBrauer
Text
plot type for displaying a label at a location in coordinate space (#2939)Plot.ShowBenchmark
is now Plot.Benchmark.IsVisible
(#2961)List<ILegend>
with a simple Legend
object with an IsVisible
property (#2792)Published by swharden 11 months ago
IsReverse
property to let users invert the orientation of an axis (#2958) Thanks @HandsomeGoldenKnight
LastRenderRectangleCoordinates
to improve mouse interactivity (#2994) Thanks @DaveMartel
OnAxesChanged
event (#3000, #3002) Thanks @dhgigisoave
LastRenderDimensions
for easy access to the latest figure dimensions (#3000, #3002) Thanks @dhgigisoave
BoxAlphaOverride
and MarkerAlpha
allows for exact color representation (#2967, #3013) Thanks @Gray-lab and @Em3a-c
Bitmap
disposal as controls are unloaded (#3023, #2902) Thanks @KroMignon and @mocakturk
IsUnderMouse()
after Update()
is called (#2870, #2969, #3025) Thanks @KroMignon, @SasKayDE, and @onur-akaydin
AddBar()
overload for creating a single highly customized bar graph bar (#3024, #3033) Thanks @melhashash
Axis.SetTicks()
to allow full customization of major and minor ticks (#2957) Thanks @FannyAtGitHub
GetImageHTML()
has been renamed to GetImageHtml()
(#2974) Thanks @b4shful
Published by swharden about 1 year ago
TotalHorizontal
and TotalVertical
renamed to Horizontal
and Vertical
(#2874, #2878) Thanks @viktoriussuwandi
Expanded()
method for creating a copy of the rectangle expanded to include a given point (#2871, #2890) Thanks @aespitia
Add.Line(x1, x2, y1, y2)
and related overloads for adding straight lines to plots (#2901, #2915)Statistics.Regression
(see cookbook) for fitting lines to collections of X/Y data points (#2901) Thanks @anewton
Published by swharden about 1 year ago
UseParallel
option which can improve Update()
performance for large datasets (#2897) Thanks @bukkideme
Published by swharden about 1 year ago
XMin
, XMax
, YMin
, and YMax
properties are now Left
, Right
, Bottom
, Top
for all coordinate primitives (#2840)AutoScale()
customization using Margins()
to define whitespace area (#2857)RenderQueue
to allow cross-control render requests that would otherwise cause render artifacts or infinite loopsSharedAxisManager
and SharedLayoutManager
to facilitate pairing controls togetherPublished by swharden about 1 year ago
WithPan()
overloads to facilitate panning in interactive applications (#2863) Thanks @LapinFou
AddRectangle()
for placing rectangular shapes on plots (#2866) Thanks @dpieve
Published by swharden about 1 year ago
TickFont
to allow tick label size and style customization (#2747) Thanks @heartacker
Title()
, XLabel()
, and YLabel()
helper methodsScaleFactor
property to manage scaling of all plot components (#2747) Thanks @heartacker
RenderManager
which has a List<RenderAction>
the user can modify to customize the render sequence (#2767)IsVisible
property (#2805)NumericManual
tick generator for manually-defined tick positions and labelsTitle()
, XLabel()
, and YLabel()
have optional arguments for size
Plot.Style.SetFont()
to apply the given font to all titles, axis labels, and tick labelsPlot.Style.SetFontFromText()
to apply system font that best supports the language of the provided text (#2746) Thanks @heartacker
double
values (#2780) Thanks @Silent0Wings
Pixel
, PixelSize
, and PixelRect
(#2784)WithAlpha()
method that accepts a fraction (#2794, #2776) Thanks @mjpz
Distance()
method for calculating distance between two points in axis space (#2791, #2798) Thanks @able-j
Center
property that returns a Coordinates
value in axis space (#2789, #2812) Thanks @tijin-abe-thomas
Contains()
method to evaluate whether given Coordinates
are inside the rectangle (#2790, #2813) Thanks @tijin-abe-thomas
GetCoordinates()
with built-in logic for display scaling compensation (#2760)slope
argument to RandomWalk()
(#2763, #2826) Thanks @JasonC0x0D
Plot.Legend()
(#2764)Plot.Axes
has been renamed to Plot.AxisStyler
to better communicate its purpose (#2778)ExpandingAxisLimits
helper class for creating AxisLimits
inside plottables (#2799)Pan()
and Zoom()
methods that do not require passing state like MousePan()
and MouseZoom()
do (#2800)Plot.RenderManager.RenderFinished
event that provides a RenderDetails
indicating whether axes or layout changed (#2801)RefreshQueue()
to allow facilitate event-driven refreshing of multiple controls in single-thread applications (#2801, #2802)MatchAxisLimits()
to simplify applying limits from one plot to another in multi-control applications (#2802)MatchLayout()
and FixedLayout()
as an alternative to the default AutomaticLayout()
engine (#2802)Published by swharden about 1 year ago
AddDataLogger()
and AddDataStreamer()
for customizing style (#2733) Thanks @KroMignon
ScottPlot.Version
classAvalonia.Desktop
package (#2752, #2748) Thanks @Fruchtzwerg94
Rotation
and CenterOfRotation
properties (#2814, #2815) Thanks @bukkideme
PlottableDragged
event (#2820) Thanks @tadmccorkle
Published by swharden over 1 year ago
Published by swharden over 1 year ago
ToString()
message Thanks @RachamimYaakobov
ScaleY
property to compliment OffsetY
(#2642, #2656) Thanks @Guillaume-Deville
Plot.Launch
methods available without requiring using statements (#2627, #2657) Thanks @Guillaume-Deville
BoxBorderColor
and ErrorStDevBarColor
properties to customize appearance (#2708) Thanks @johndoh
GetXs()
and GetYs()
to let users retrieve copies of data points (#2694, #2711) Thanks @bukkideme and @Marc-Frank
ScottPlot.LineStylePatterns
(#2690, #2692) Thanks @mocakturk, @Marc-Frank, and @bukkideme
ResizeLayout()
helper method for adjusting plot layouts to accommodate large tick labels (#2703)Published by swharden over 1 year ago
Published by swharden over 1 year ago
Rotation
property (#2588, #2595) Thanks @JohniMIEP and @bclehmann
AddVerticalLine()
XML docs (#2610) Thanks @wfs1900
GetBollingerBands()
now accepts an optional standard deviation coefficient (#2594) Thanks @Minu476
Update()
did not change the final point (#2592) Thanks @Angeld10
Published by swharden over 1 year ago
UserControl
to a CustomControl
to facilitate inheritance and theming (#2509, #2526) Thanks @KroMignon
LineWidth
property (#2556) Thanks @benton-anderson
SliceLabelPosition
property to allow slice labels to be placed outside the pie (#2515, #2510, #2275) Thanks @nuelle16 and @cpa-level-it
Edge
and AxisIndex
immutable to prevent accidental modification after construction (#2539, #2538) Thanks @cxjcqu
LeftAxis
, RightAxis
, BottomAxis
, and TopAxis
which alias YAxis
, YAxis2
, XAxis
, and XAxis2
but are more expressive (#2568)Launch
property has methods for launching the plot as a static image, refreshing web page, or interactive window (#2543, #2570)SetZoomInLimit()
, SetZoomOutLimit()
, and SetBoundary()
to control zoom and pan (#2250, #2291, #1997, #1873, #662) Thanks @dusko23, @Gholamalih, and @bclehmann
Configuration.RightClickDragZoomFromMouseDown
flag to enable right-click-drag zoom to scale relative to the cursor (#2296, #2573) @pavlexander
Update()
to throw an indexing error (#2578) Thanks @Angeld10
X
and Y
but instead Alignment
, MarginX
, and MarginY
(#2302) Thanks @EFeru
Label
property (#2341) Thanks @bukkideme