在Pandas直方图中设置y轴限制

21

我正在使用Pandas直方图。

我想设置绘图的y轴范围。

以下是上下文:

import matplotlib.pyplot as plt
%matplotlib inline

interesting_columns = ['Level', 'Group']

for column in interesting_columns:
    data['ranking'].hist(by=data[column], normed=True)

有一个范围参数可以过滤x值,但我不知道对应y值的参数:

hist(by=[column], normed=True, range=[0, 1]) #working argument
hist(by=[column], normed=True, y_range=[0, 1]) #hypothetical argument

我已经阅读了许多使用plt属性更改绘图范围的不同方法。它们似乎无法在循环和子图中起作用。

我很难掌握正确的解决方法。


你尝试过给hist指定一个句柄,比如:h1=hist(...),然后查看h1.*有哪些方法吗?它可能会有类似于h1.set_ylim的方法。 - Sleepyhead
2个回答

44

如果您使用

data['ranking'].plot.hist(ylim=(0,1)) 

(注意语法中的.plot!)它应该可以正常工作。


谢谢。这适用于所有绘图选项! - mrmagicfluffyman
18
请注意:data['ranking'].hist(ylim=(0,1)) 无法正常工作,但是 data['ranking'].plot.hist(ylim=(0,1)) 可以。这有点令人困惑,因为在没有关键字的情况下两者都可以正常工作。 - Martin Thoma
1
@MartinThoma 谢谢您的评论,但这是为什么呢? - Long Le
@LongLe 我不知道,但我也很感兴趣。也许你可以提出另一个问题并在这里发布答案? - Martin Thoma

4
您可以通过添加选项sharey=True来使所有子图共享相同的y轴限制,类似地,使用sharex=True来共享x轴。 data['ranking'].hist(by=data[column], sharey=True)

1
仅提供代码的答案被认为是低质量的,请确保解释您的代码是如何解决问题的。如果您能在帖子中添加更多信息,这将有助于提问者和未来的读者。请参见《解释完全基于代码的答案》(https://meta.stackexchange.com/questions/114762/)。 - Calos
这样可以使所有的直方图具有相同的y轴,但你如何限制它们的高度呢? - giusti
@giusti 当所有的直方图共享相同的y轴时,y轴的限制由所有数据点的y值范围确定。一种(可能不是最好的)限制高度的方法是事先删除超出y范围的数据点。 - Xiao Huang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接