With matplotlib 1.4.0 the cla() method for the twinx axes also clears the
primary axes. With matplotlib 1.3.1 the method only clears the twinx axes as
expected. I have a much longer program where the twinx axes must be cleared
while retaining the primary axis plot. I would prefer not to replot the entire
graph each time the twinx axes change. You can see this by adding the cla
method to the matplotlib web site example, two_scales.py, shown below.
I have matplotlib installed via the anaconda package. Matplotlib 1.4.0 is from
anaconda 2.1.0. Matplotlib 1.3.1 is from 1.9 versions of the anaconda package.
Linux version:
Linux gamow 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
Same cla() result on osX 10.9.4.
Same result for backends Qt4Agg and TkAgg; the cla() method cleared both axes.
I also tried various other options such as setting ax2.hold(False) prior to
replotting ax2. However, once again ax1 was cleared. The ax2 clear commands
seem to apply to the ax1 axis as well??? These options worked as expected for
the earlier matplotlib version, clearing only the ax2 axis.
Here's the code: if you execute the code, you should see a blank figure with
the cla() included and the usual two graphs without the cla() method.
--------------------------------------------------------------------
import numpy as np
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
t = np.arange(0.01, 10.0, 0.01)
s1 = np.exp(t)
ax1.plot(t, s1, 'b-')
ax1.set_xlabel('time (s)')
# Make the y-axis label and tick labels match the line color.
ax1.set_ylabel('exp', color='b')
for tl in ax1.get_yticklabels():
tl.set_color('b')
ax2 = ax1.twinx()
s2 = np.sin(2*np.pi*t)
ax2.plot(t, s2, 'r.')
ax2.set_ylabel('sin', color='r')
for tl in ax2.get_yticklabels():
tl.set_color('r')
# single line addition to the two_scales.py example
# clears both ax2 and ax1 under matplotlib 1.4.0, clears only ax2 under
matplotlib 1.3.1
# obviously, same result with ax2.clear() method
ax2.cla()
plt.show()
I would appreciate any help; this looks like a bug in the latest version of
matplotlib.
I could not find any reference to this problem in earlier posts.
Thanks,
Charlie
------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users