Skip to content

Y-labels shifted #1571

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
dopplershift opened this issue Dec 7, 2012 · 2 comments
Closed

Y-labels shifted #1571

dopplershift opened this issue Dec 7, 2012 · 2 comments
Assignees

Comments

@dopplershift
Copy link
Contributor

dopplershift commented Dec 7, 2012

Y-labels on colorbars are no longer centered any more. This is readily seen by running pylab_examples/contourf_demo.py. A git bisect shows the problem was caused by b9fba92.

This same commit has also resulted in shifted y-axis labels for axes created using the axes_grid toolkit. The easiest way to see this is to add y-axis labels to the axes_grid/demo_axes_grid.py. Tweaking that demo as below shows both problems:

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import AxesGrid

def get_demo_image():
    import numpy as np
    from matplotlib.cbook import get_sample_data
    f = get_sample_data("axes_grid/bivariate_normal.npy", asfileobj=False)
    z = np.load(f)
    # z is a numpy array of 15x15
    return z, (-3,4,-4,3)

def demo_grid_with_each_cbar(fig):
    """
    A grid of 2x2 images. Each image has its own colorbar.
    """

    grid = AxesGrid(F, 111, # similar to subplot(122)
                    nrows_ncols = (2, 2),
                    axes_pad = 0.1,
                    label_mode = "1",
                    share_all = True,
                    cbar_location="right",
                    cbar_mode="each",
                    cbar_size="7%",
                    cbar_pad="2%",
                    )
    Z, extent = get_demo_image()
    for i in range(4):
        im = grid[i].imshow(Z, extent=extent, interpolation="nearest")
        grid.cbar_axes[i].colorbar(im)
    grid[2].set_ylabel('Long y label')
    grid.cbar_axes[3].set_ylabel('Long Cbar label')


    # This affects all axes because we set share_all = True.
    grid.axes_llc.set_xticks([-2, 0, 2])
    grid.axes_llc.set_yticks([-2, 0, 2])



F = plt.figure(1, (5.5, 2.5))

F.subplots_adjust(left=0.05, right=0.98)

demo_grid_with_each_cbar(F)

plt.draw()
plt.show()

The commit makes sense as causing the problem, but I'm not sure why.

@ghost ghost assigned pwuertz Dec 7, 2012
dopplershift added a commit to dopplershift/matplotlib that referenced this issue Dec 12, 2012
Account for rotation mode when setting axis label position. This is
used, for instance, when setting labels on colorbars.
@dopplershift
Copy link
Contributor Author

It turns out that the change to use "anchored" neglected to update the axis's set_label_position(). The commit (and PR) fix this directly. However, as discussed in the PR, I'm not sure this is the best way--axis ends up thinking way too much about text rotation.

dopplershift added a commit to dopplershift/matplotlib that referenced this issue Jan 16, 2013
Force 'anchor' rotation mode when setting the label position,
and use the appropriate alignment for the Y-label position.
dopplershift added a commit that referenced this issue Jan 16, 2013
@dopplershift
Copy link
Contributor Author

Fixed by b2a80a7.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants