Closed abhimat closed 6 months ago
This is (somewhat) by design - the idea was to support passing figures with specific sizes, etc, setup, but not designed to allow plotting on top of existing plots (since phoebe wouldn't know what axes to plot to or what it should vs should not overwrite). You can, however, modify the figure after getting it back from phoebe, but I don't think that will do the trick for you want either (since, if I understand correctly, you want to make multiple calls to phoebe's plotting). If matplotlib's subplot grid is flexible enough for you - would something like this do the trick?
import phoebe
b = phoebe.default_binary()
b.add_dataset('mesh', compute_times=[0, 0.1, 0.2, 0.3])
b.run_compute()
for time, axpos in ((0, 221), (0.1, 222), (0.2, 223), (0.3, 224)):
b.plot(time=time, axpos=axpos)
b.show()
Aaah I see. I was using the axpos keyword, but in each call to plot()
I was also sending the save keyword! It seems this is what was leading to the clearing of the figure. If I omit the save keyword until the very end, I do obtain a subplot arrangement like your example.
Thank you for your quick and helpful response!
When passing an existing matplotlib figure to PHOEBE's
plot()
command using thefig=
keyword, the contents of the figure are cleared. After a little bit of investigating, this appears to be due to the following portion of the figure.py code in autofig (lines 589–592) being called by PHOEBE.My use case is wanting to plot mesh plots from several phases of a binary model as separate axes in a single matplotlib figure. I wasn't successfully able to pass in existing axis objects to PHOEBE's
plot()
function. I was hoping to instead use autofig's subplot commands and draw in the same figure for each call to PHOEBE'splot()
function, but the contents of any figure objects passed toplot()
in PHOEBE are wiped out each time, and at the end I'm only left with a figure object with a single axis object containing the most recent mesh plot drawn.