Description
Bug report
Changing plot alignment for different placing of colorbar() in twinx plot
If one combines a pcolormesh
plot/hist2d
plot with a standard plot
by using twinx
, the graph from the plot
moves to wrong x values if the colorbar is called after the plot
call. If it is called before, the alignment is fine.
I am not sure if this is a bug or just wrong usage.
However, one of the resulting graphs has a wrong extent that might lead to misinterpretations.
Code for reproduction
import numpy as np
import matplotlib.pyplot as plt
data = np.random.random((64, 128)) * 2.0
x = np.arange(128)
y = np.arange(64)
plt.pcolormesh(x, y, data)
#plt.colorbar() --> here it works fine
plt.twinx()
plt.colorbar()
# --> here it gives wrong x values for the orange plot
plt.plot(x, np.sin(x/10), color="orange", lw=4)
plt.show()
Actual outcome
Next to the confusing layout the plot shows actually a wrong graph:
the orange plot just goes to around x=100 but should go to x=128.
(The axis of the colorbar is correct and shows the range of data
.)
Expected outcome
If colorbar
is called before twinx
, the orange graph has the correct extent.
I am not sure if this is a bug or a wrong usage of matplotlib. In any case the wrong extent of the (in this case) orange plot is a dangerous behavior that might lead to misinterpretations of the data.
Matplotlib version
- Operating System: Ubuntu 14.04.1
- Matplotlib Version: 2.0.0rc1
- Python Version: 3.4.3
- Jupyter Version: 1.0.0 (I am using
%matplotlib inline
) - Other Libraries: numpy 1.12.0b1
I installed matplotlib via pip.