Christopher Graves reported this on the mailing list:
I do not think this is the expected behavior. First, run the following:
from pylab import *
ax1 = gca()
#ax2 = ax1.twiny()
You will see that the y-axis is log10rithmic and axis labels are 0.1 and 1 rather than 10^-1 and 10^0, due to the use of set_major_formatter().
Now uncomment the 2 commented lines and run it again. It seems that upon applying a twiny(), the set_major_formatter() action is removed and the y-axis is now displayed as 10^-1 and 10^0. Or more likely, the y-axis is "overwritten" with a new y-axis present in ax2. One can add another gca().yaxis.set_major_formatter(FormatStrFormatter('$%g$')) before the show() and it works as intended. However, it seems like unexpected behavior to "lose" the formatting when twinning the axis to add a secondary x-axis. Any advice or agreement that this could be a bug?
This issue can be closed now. It has been resolved with #1145.