How do I include a matplotlib Figure object as subplot? -
this question has answer here:
how can use matplotlib figure object subplot? specifically, have function creates matplotlib figure object, , include subplot in figure.
in short, here's stripped-down pseudocode i've tried:
fig1 = plt.figure(1, facecolor='white') figa = myseparateplottingfunc(...) figb = myseparateplottingfunc(...) figc = myseparateplottingfunc(...) figd = myseparateplottingfunc(...) fig1.add_subplot(411, figure=figa) fig1.add_subplot(412, figure=figb) fig1.add_subplot(413, figure=figc) fig1.add_subplot(414, figure=figd) fig1.show()
sadly, however, fails. know fact individual plots returned function invocations viable--i did figa.show(),...,figd.show() confirm ok. final line in above code block--fig1.show()--is collection of 4 empty plots have frames , x- , y- tickmarks/labels.
i've done quite bit of googling around, , experimented extensively, it's clear i've missed either subtle, or embarrassingly obvious (i'll happy latter long can un-stuck).
thanks advice can offer!
you can't put figure
in figure
.
you should modify plotting functions take axes
objects argument.
i unclear why kwarg figure
there, think artifact of way inheritance works, way documentation auto-generated, , way of getter/setter work automated. if note, says figure
undocumented in figure
documentation, might not want;). if dig down bit, kwarg controls figure created axes attached too, not want.
in general, moving existing axes/artists between figures not easy, there many bits of internal plumbing need re-connected. think can done, involving touching internals , there no guarantee work future versions or warning if internals change in way break it.
you need plotting functions take axes
object argument. can use pattern like:
def myplotting(..., ax=none): if ax none: # existing figure generating code ax = gca()
so if pass in axes
object gets drawn (the new functionality need), if don't of old code work expected.
Comments
Post a Comment