1.1.32 Histogram 直方图
该题目来源于Robert Sedgewick 的《算法》。
1.1.32 Histogram. Suppose that the standard input stream is a sequence of double values. Write a program that takes an integer N and two double values l and r from the command line and uses StdDraw to plot a histogram of the count of numbers in the standard input stream that fall in each of the N intervals defined by dividing (l, r) into N equal-sized intervals.
1.1.32 直方图。 假设标准输入流中是一系列double值。写一个程序从命令行接受一个整数 N 和两个double值 l 和 r ,将(l,r) 分成N段,并使用StdDraw画出输入流的值落入每段的数量的直方图。
在统计学中,直方图是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 直方图是品质管理七大工具之一。【来源于维基百科】
首先做一个柱状图,了解一下 StdDraw类中filledRectangle的方法:
/*** bar chart example*/public static void barChart(){int N = 5;double[] a = new double[N];for (int i = 0; i < N; i++) {a[i] = StdRandom.random();}for (int i = 0; i < N; i++) {//矩形一半的宽double rw = 0.5 / N;// 矩形一半的高double rh = a[i] /2.0;//矩形中心点x轴的坐标double x = 1.0 * i / N + 1.0 / N / 2;// 矩形中心点y轴的坐标double y = rh;System.out.println("x=" + x + ",y=" + y + ",rw=" + rw + ",rh=" + rh);StdDraw.filledRectangle(x, y, rw, rh);}}
在main方法中调用上面的方法,会展示下面的视图:
本道题的解决如下:
/*** solution * @param N the numbers of intervals * @param l interval left value* @param r interval right value* @param a double stream*/public static void histogramSolution(int N, double l, double r, double[] a){// double stream的组距Arrays.sort(a);double interval = (r -l) / N;// histogram 的组距double histogramInterval = 1.0 / N;for (int i = 0; i < N; i++) {// double stream 组距左边的值double dsLeft = interval * i + l;// double stream 组距右边的值double dsRight = interval * (i+1) + l;// 矩形中心位置x轴的坐标double x = histogramInterval *i +histogramInterval / 2;// 频次,代表直方图的高int countTemp = 0;for (int j = 0; j < a.length; j++) {// 频次if (a[j] > dsLeft && a[j] < dsRight ) {countTemp ++;}}double p = (countTemp * 1.0) / a.length;//double p = (countTemp * 1.0) / N;// 矩形中心位置y周的坐标double y = p / 2;StdDraw.filledRectangle(x, y, histogramInterval / 2, y);}}
比如,用main方法模拟调用:
public static void main(String[] args) {//barChart();// represent argument Nint N = 3;// represent argument l// represent argument rdouble l = 1.09;double r = 23.32;// represent double streamdouble[] a = {1.08, 1.21, 2.33, 3.35, 8.78, 6.98, 7.99, 10.21, 15.22, 21.23, 14.51, 16.77, 18.23};histogramSolution(N, l, r, a);}
展示的结果如下:
1.1.32 Histogram 直方图相关推荐
- python——np.histogram()直方图生成函数
直方图 直方图定义 在统计学中,直方图是一种对数据分布情况的图形表示,是一种二维统计图表,他的两个坐标分别是统计样本(图像.视频帧)和样本的某种属性(亮度,像素值,梯度,方向,色彩等等任何特征) 直方 ...
- 5 种方法教你用Python玩转histogram直方图
直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱.大家平时可能见到最多就是 matplotlib,seaborn 等高级封装的库包,类似以下这样的绘图. 本篇博主将要总 ...
- python 条形图填充疏密_教你利用Python玩转histogram直方图的五种方法
直方图 直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱.大家平时可能见到最多就是 matplotlib,seaborn 等高级封装的库包,类似以下这样的绘图. 本篇博 ...
- 用python构建多只股票日收益率直方图_5种方法教你用Python玩转histogram直方图
作者:xiaoyu 微信公众号:Python数据科学 直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱.大家平时可能见到最多就是 matplotlib,seaborn ...
- python直方图分箱_5种方法教你用Python玩转histogram直方图
作者:xiaoyu 微信公众号:Python数据科学 直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱.大家平时可能见到最多就是matplotlib,seaborn 等 ...
- elasticsearch 之 histogram 直方图聚合
1. 简介 直方图聚合是一种基于多桶值聚合,可从文档中提取的数值或数值范围值来进行聚合.它可以对参与聚合的值来动态的生成固定大小的桶. 2. bucket_key如何计算 假设我们有一个值是32,并且 ...
- np.histogram()直方图分布
np.histogram()是一个生成直方图的函数 示例如下: 首先生成了500个拉普拉斯分布随机数并且取了前10个数 >>>d = np.random.laplace(loc=15 ...
- python 直方图的绘制方法全解_教你利用Python玩转histogram直方图的五种方法
直方图 直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱.大家平时可能见到最多就是 matplotlib,seaborn 等高级封装的库包,类似以下这样的绘图. 本篇博 ...
- 【转载】matlab histogram直方图设置
转自百度经验,原地址:https://jingyan.baidu.com/article/4f7d5712dd9e101a201927ec.html 转载图片不完整,去原地址学习吧·~ 这里介绍使用M ...
- python matplotlib plt bins histogram 直方图
直方图 import matplotlib.pyplot as pltplt.hist(x = '需要处理的数据',bins = '需要分割的精度') plt.xlabel('x轴标签') plt.y ...
最新文章
- [置顶] 安卓高手之路之ClassLoader(二)
- 如何在ubuntu上搭建hustoj?
- iOS之获取手机的系统信息
- 剥开比原看代码(八):比原的Dashboard是怎么做出来的?
- python解释器的提示符是shell嘛_python解释器怎么运行
- 2015年,大数据将改变客户关系
- [HEOI2016/TJOI2016]求和(第二类斯特林数)
- 【js】【前台输入效验】【validate插件的使用】 前端
- hdu1002——A + B Problem II
- maven指定配置文件
- 云网融合:中国电信国际公司的海外野心
- 情感驿站005:为什么大多数人永远不会真正成功?
- ajax方法参数详解,$.ajax()方法参数详解
- JavaScript事件与JQuery事件
- Unity3D自带案例AngryBots分析(二)——人物动作控制逻辑
- 基于BLE + LoRa人员定位技术下的室内定位-Lora人员定位-新导智能
- Latex中如何使用中文?
- Android高德地图的定位
- 如何用MCU来控制21489调音?
- 《科技创业启示录》一第3章 拉尔斯·欣里希斯