Skip to content

Commit

Permalink
Implement plotat for solution plot recipe
Browse files Browse the repository at this point in the history
This allows the user to specify the times to plot at when using the recipe. This makes it so you can better control the times even when just using the automated dense form. This is much better than interpolating and then plotting since it has all of the niceties like the automated labels.
  • Loading branch information
ChrisRackauckas committed Dec 31, 2023
1 parent 5340bea commit a5680c7
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions src/solutions/solution_interface.jl
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ DEFAULT_PLOT_FUNC(x, y, z) = (x, y, z) # For v0.5.2 bug
(sol.prob isa AbstractDiscreteProblem ?
max(1000, 100 * length(sol)) :
max(1000, 10 * length(sol))) :
1000 * sol.tslocation),
1000 * sol.tslocation, plotat = nothing),
tspan = nothing,
vars = nothing, idxs = nothing)
if vars !== nothing
Expand All @@ -190,7 +190,7 @@ DEFAULT_PLOT_FUNC(x, y, z) = (x, y, z) # For v0.5.2 bug

tscale = get(plotattributes, :xscale, :identity)
plot_vecs, labels = diffeq_to_arrays(sol, plot_analytic, denseplot,
plotdensity, tspan, vars, tscale)
plotdensity, tspan, vars, tscale, plotat)

tdir = sign(sol.t[end] - sol.t[1])
xflip --> tdir < 0
Expand Down Expand Up @@ -267,7 +267,7 @@ DEFAULT_PLOT_FUNC(x, y, z) = (x, y, z) # For v0.5.2 bug
end

function diffeq_to_arrays(sol, plot_analytic, denseplot, plotdensity, tspan,
vars, tscale)
vars, tscale, plott)
if tspan === nothing
if sol.tslocation == 0
end_idx = length(sol)
Expand All @@ -287,7 +287,9 @@ function diffeq_to_arrays(sol, plot_analytic, denseplot, plotdensity, tspan,
(start, stop, n) -> range(start; stop = stop, length = n)
end

if denseplot
if plotat !== nothing
plott = plotat
elseif denseplot

Check warning on line 292 in src/solutions/solution_interface.jl

View check run for this annotation

Codecov / codecov/patch

src/solutions/solution_interface.jl#L290-L292

Added lines #L290 - L292 were not covered by tests
# Generate the points from the plot from dense function
if tspan === nothing && !(sol isa AbstractAnalyticalSolution)
plott = collect(densetspacer(sol.t[start_idx], sol.t[end_idx], plotdensity))
Expand Down

0 comments on commit a5680c7

Please sign in to comment.