Skip to content

Loading…

Y-labels shifted #1571

Closed
dopplershift opened this Issue · 2 comments

2 participants

@dopplershift

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.

@pwuertz pwuertz was assigned
@dopplershift dopplershift added a commit to dopplershift/matplotlib that referenced this issue
@dopplershift dopplershift Fix shifted ylabels (#1571)
Account for rotation mode when setting axis label position. This is
used, for instance, when setting labels on colorbars.
1f9b154
@dopplershift

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 dopplershift added a commit to dopplershift/matplotlib that referenced this issue
@dopplershift dopplershift Fix shifted ylabels (#1571)
Force 'anchor' rotation mode when setting the label position,
and use the appropriate alignment for the Y-label position.
b2a80a7
@dopplershift

Fixed by b2a80a7.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.