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

Posted

技术标签:

【中文标题】在 Pandas 直方图中设置 y 轴限制【英文标题】:Set y axis limit in Pandas histogram 【发布时间】:2016-11-20 08:05:49 【问题描述】:

我正在使用 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 或类似的东西 【参考方案1】:

您可以简单地添加选项 sharey=True 以使所有子图共享相同的 yaxis 限制,类似于使用 sharex=True for xaxis

data['ranking'].hist(by=data[column], sharey=True)

【讨论】:

仅代码的答案被认为是低质量的:请务必说明您的代码的作用以及它如何解决问题。如果您可以在帖子中添加更多信息,它将帮助提问者和未来的读者。见Explaining entirely code-based answers 这使得所有的直方图都有相同的y轴,但是你如何限制它们的高度呢? @giusti 当所有直方图共享同一个 y 轴时,y 轴的限制由所有数据点的 y 值的范围决定。限制高度的一种方法(可能不是最好的)是预先删除 y 范围之外的数据点。【参考方案2】:

如果你使用

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

它应该工作。

【讨论】:

谢谢。这更普遍地适用于所有绘图选项! 请注意:data['ranking'].hist(ylim=(0,1)) 不起作用,但 data['ranking'].plot.hist(ylim=(0,1)) 起作用。这有点令人困惑,因为没有关键字两者都可以工作。 @MartinThoma 感谢您的评论,但为什么会这样呢? @LongLe 我不知道,但我也对答案感兴趣。也许您可以再问一个问题并在此处发布答案?

以上是关于在 Pandas 直方图中设置 y 轴限制的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 直方图标签和标题

Python & Pandas:当 Pandas 将直方图绘制到特定轴时的奇怪行为

python-matplotlib函数

Matplotlib / Pandas 直方图对齐不正确

将R ggplot中直方图中的y轴标准化为比例

如何在 0 和 1 之间标准化直方图的 Y 轴?