How To Enable/disable Easily Shared Axis Using Matplotlib
Solution 1:
You can do:
ax2.get_shared_x_axes().remove(ax1)
References:
- API docs explaining get_shared_x_axes
- API docs describing Grouper.remove
- (Looks like the remove method was added to the Grouper object in 2015)
Solution 2:
There is no existing easy way to do this, however I think it can be done (it will just take a bit of digging into the matplotlib internals). The way that the axes are linked underneath is by simply using the same locator and formatter objects for both axis. To link/unlink you will have to copy/make new all of those objects, as well as update some ancillary structures (_shared_x_axes, _shared_y_axes). Look at the implementation of matplotlib.axes.Axes.cla() for some idea of what you need to do.
There is a pull request against the repo that adds this functionality and the associated feature request. If you are comfortable a) installing from source b) using master and c) applying this patch I think the developers would appreciate you testing this.
Solution 3:
You can change the Grouper object that defines which plots are sharing their axes. The Grouper object for x axes can be found in ax1._shared_x_axes as well as in ax2._shared_x_axes, since it's the same object.
To stop sharing the x axis of the both plots, you can do ax2._shared_x_axes.remove(ax2).
In order to joining them again, do ax2._shared_x_axes.join(ax1,ax2).
If you want to understand better, you can check the documentation here. ax1._shared_x_axes is a Grouper object, in which ax1 and ax2 are the joint elements.
With the ax2.get_shared_x_axes() method you just can read it, but not change it. For aplying modifications, you need to access this object directly with ax2._shared_x_axes.
Post a Comment for "How To Enable/disable Easily Shared Axis Using Matplotlib"