a = lo(numbers).rgb.fig # matplotlib figure
print(type(a))
a<class 'matplotlib.figure.Figure'>

.fig.rgb, .chans and .plt all have a .fig attribute that returns a matplotlib figure object.
You can save the figure by calling its savefig method:
AxesAll functions allow an ax= argument that accepts an existing Axes object into which they will plot:
fig = plt.figure(figsize=(8,3))
fig.set_constrained_layout(True)
gs = fig.add_gridspec(2,2)
ax1 = fig.add_subplot(gs[0, :])
ax2 = fig.add_subplot(gs[1, 0])
ax3 = fig.add_subplot(gs[1,1:])
ax2.set_axis_off()
ax3.set_axis_off()
lo(numbers).plt(ax=ax1)
lo(numbers).rgb(ax=ax2)
lo(numbers).chans(ax=ax3);
By default, the Lovely functions will call plt.close(fig) on the figures they create.
This prevents displaying the figures twice when running in Jupyter.
If you are not using Jupyter, here are 2 configuration options you might want to set:
fig_close=False
fig_show=True
If set, lovely will call plt.show() after each figure creation.
You donβt need to set fig_close=False manually.
Note, plt.show() closes all figures.