Aquí está el método (OMI) más elegante basado en el código de Belisario, que utiliza la opción DisplayFunction
(ver here interesante discusión sobre esta opción):
Plot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10},
Filling -> Axis,
DisplayFunction ->
Function[{plot},
Show[plot,
AxesOrigin ->
First /@ (PlotRange /. AbsoluteOptions[plot, PlotRange]),
DisplayFunction -> Identity]]]
El único inconveniente de ambos métodos es que AbsoluteOptions
does not always give correct value of PlotRange
. La solución es utilizar the Ticks
hack (que da la completa PlotRange
con valor explícito de PlotRangePadding
añadido):
completePlotRange[plot_] :=
[email protected]@
Reap[Rasterize[
Show[plot, Ticks -> (Sow[{##}] &), DisplayFunction -> Identity],
ImageResolution -> 1]]
Plot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10},
Filling -> Axis,
DisplayFunction ->
Function[{plot},
Show[plot, AxesOrigin -> First /@ completePlotRange[plot],
DisplayFunction -> Identity]]]
Es interesante señalar que este código da exactamente la misma representación como simplemente especificando Frame -> {{Automatic, None}, {Automatic, None}}, Axes -> False
:
pl1 = Plot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10},
Filling -> Axis,
DisplayFunction ->
Function[{plot},
Show[plot, AxesOrigin -> First /@ completePlotRange[plot],
DisplayFunction -> Identity]]];
pl2 = Plot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10},
Filling -> Axis, Frame -> {{Automatic, None}, {Automatic, None}},
Axes -> False];
Rasterize[pl1] == Rasterize[pl1]
=> True
Creo que ayudaría si pudieras agregar la instrucción matemática que produjo esa gráfica/imagen a tu pregunta? – dbjohn