Skip to content
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

hist(..., histtype='step') does not set ylim properly. #2061

Closed
tkf opened this issue May 24, 2013 · 3 comments
Closed

hist(..., histtype='step') does not set ylim properly. #2061

tkf opened this issue May 24, 2013 · 3 comments

Comments

@tkf
Copy link
Contributor

tkf commented May 24, 2013

Checked with the latest version from master (d5071f4).

import numpy
import pylab

x = numpy.array(
      [ 94,  95,  96,  98,  84, 104,  99,  88,  80,  90,  99,  95,  89,
        88,  94,  99,  99,  91, 100,  86, 102,  85,  84,  95,  87,  87,
       106, 109,  97,  97, 106,  93,  90,  91,  95,  93,  81,  93, 103,
        82,  94,  89, 113,  93,  95, 103,  99,  99,  93, 103,  87,  94,
        96, 104,  88,  98,  89, 117,  88,  87,  97,  91,  84,  90,  98,
        90, 100,  92, 102,  89, 104, 104,  92,  96,  88,  97, 105, 106,
       104, 105,  88,  93, 112,  82, 102,  81,  80,  86, 100, 101,  93,
        93,  91,  99,  90, 100,  93,  96,  99,  99])
pylab.hist(x, histtype='step')
pylab.savefig('fig.png')

fig

It failed to show the lower y values. If you set ymin=0, you can see it:

pylab.ylim(ymin=0)
pylab.savefig('fig2.png')

fig2

@mdboom
Copy link
Member

mdboom commented May 24, 2013

Marking as 1.3.x blocker -- hopefully the fix is simple an obvious, otherwise it might not make the cutoff, of course.

@dhyams
Copy link
Contributor

dhyams commented May 24, 2013

I can confirm that if you stick in a relim() call right at the end of Axes.hist(), it fixes this bug:

    self.set_autoscalex_on(_saved_autoscalex)
    self.set_autoscaley_on(_saved_autoscaley)
    self.relim()    #<------------------HERE
    self.autoscale_view()

    if nx == 1:
        return n[0], bins, cbook.silent_list('Patch', patches[0])
    else:
        return n, bins, cbook.silent_list('Lists of Patches', patches)

What I cannot confirm is that this is the best way to fix this bug. I'm not entirely clear why there is funny business going on with flipping autoscaling on and off in the hist() routine. I guess there is some updating of self.dataLim that gets missed out on, because of autoscaling being turned on and off during hist()?

image

@mdboom
Copy link
Member

mdboom commented May 29, 2013

Fixed by #2082.

@mdboom mdboom closed this as completed May 29, 2013
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

3 participants