You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何指定包含[0,1[、[1,2[、>=2的三箱直方图区间?

如何指定包含开放区间和“大于等于某值”的直方图区间

嘿,这个问题其实挺常见的!你提到用seq来设置区间,但seq更适合生成连续的等距有限序列,要搞定最后一个>=2的区间,咱们得换个思路——用手动区间划分的方式,而不是只依赖seq。下面分两种常用数据分析工具给你具体说明:

R语言实现

在R里,cut()函数是处理自定义区间的利器,能精确控制每个区间的开闭规则,完美适配你的需求:

  1. 首先定义区间边界,用Inf(无穷大)来表示最后一个区间的上限:
    breaks <- c(0, 1, 2, Inf)
    
  2. 把你的数据按照这个边界分组,通过right=FALSE设置左闭右开的区间规则,确保[0,1[、[1,2[的格式,同时include.lowest=TRUE保证最小值0被包含在第一个区间里:
    # 示例数据,替换成你自己的数据集即可
    x <- rnorm(100, mean=1.5, sd=0.8)
    x_groups <- cut(x, breaks=breaks, include.lowest=TRUE, right=FALSE)
    
  3. 生成直方图的方式有两种:
    • 直接用hist()函数,传入自定义边界:
      hist(x, breaks=breaks, right=FALSE, col="lightblue", main="自定义区间直方图")
      
    • 或者基于分组后的结果画条形图(更直观展示区间分组):
      barplot(table(x_groups), col="lightblue", main="自定义区间分组统计")
      

Python(Pandas+Matplotlib)实现

如果用Python做数据分析,pd.cut()函数同样能实现这个需求:

  1. 导入需要的库,定义区间边界(用float('inf')表示无穷大):
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    bins = [0, 1, 2, float('inf')]
    
  2. 对数据进行分组,参数规则和R类似:
    # 示例数据,替换成你的数据
    x = pd.Series(np.random.normal(1.5, 0.8, 100))
    x_groups = pd.cut(x, bins=bins, include_lowest=True, right=False)
    
  3. 绘制直方图:
    • 用Pandas的内置绘图功能:
      x_groups.value_counts().plot(kind='bar', color='lightblue', title='自定义区间直方图')
      plt.show()
      
    • 或者用Matplotlib原生的hist()函数:
      plt.hist(x, bins=bins, edgecolor='black', right=False)
      plt.title('自定义区间直方图')
      plt.show()
      

核心思路总结

不管用哪种工具,关键都是手动指定区间边界,用「无穷大」来表示最后一个区间的上限,而不是只靠seq生成有限的连续边界。这样就能轻松实现[0,1[、[1,2[、>=2这三个区间的划分啦!

内容的提问来源于stack exchange,提问作者costa_25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:52:21