twinx cla problem

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.

···

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

This is not tested, but did you try ax2.clear() instead?

-Sterling

···

On Oct 10, 2014, at 7:45AM, Duke, Charles wrote:

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

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.

Charlie,

I agree--it does look like a regression in 1.4. Would you post it as a github issue, please?

Thank you.

Eric

···

On 2014/10/10, 4:45 AM, Duke, Charles wrote:

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

Yes, I did. Same result as with cla().
Thanks,
Charlie

···

-----Original Message-----
From: Sterling Smith [mailto:smithsp@…3304…]
Sent: Friday, October 10, 2014 11:30 AM
To: Duke, Charles
Cc: matplotlib-users@lists.sourceforge.net
Subject: Re: [Matplotlib-users] twinx cla problem

This is not tested, but did you try ax2.clear() instead?

-Sterling

On Oct 10, 2014, at 7:45AM, Duke, Charles wrote:

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