java - 在Java中打印直方图

标签 java histogram

我正在尝试使用 TreeMap 中的值打印直方图。我使用最小的数字作为基数,数字与基数的比率决定了直方图条的高度。以下是我的代码: 它将打印出由星号“*”指示的水平条。底座(值为 1)将有两颗星。然而,问题是所有其他酒吧也有两颗星,看起来与基地没有什么不同。

private static void printHistogram(TreeMap<String, Integer> mapA)
    {
        int baseVal = mapA.firstEntry().getValue();
        String baseKey = mapA.firstKey();

        for (Map.Entry<String, Integer> e : mapA.entrySet())
        {
            int times = e.getValue() / baseVal;
            System.out.print(e.getKey() + "\t \|");
            for (int j = 0; j < times; j++)
            {
                System.out.print("**");
            }
            System.out.print("\n");
        }
    }

这是直方图打印输出:

21  |**
22  |**
23  |**
24  |**
25  |**
26  |**
27  |**
28  |**
29  |**
30  |**
31  |**
32  |**
33  |**

以下是我的 TreeMap 中的数字(排序之前):

99255
98321
98860
95365
85412
86105
84972
88132
80223
76273
74056
74077
52523

与基数 52523 的比率小于 2。我想知道如何在视觉上放大差异?因为我在终端中打印直方图,所以我无法使用图形直方图库,除非它可以将图像保存为文件。

最佳答案

我还推荐这个:
您有 min_vmax_v 值,然后选择您想要的 max_v 值的星数(例如,适合一半屏幕) - 表示为 N,并且还用 M < N 颗星表示 min_v 值(例如,可以为 0) 那么,每个值的星数为:

M + (N - M) * (e.getValue() - min_v)/(max_v - min_v)

关于java - 在Java中打印直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19624347/

相关文章:

c++ - 使用 OpenCV 在 C++ 中绘制图像绿色分量的直方图

java - 是否可以动态更改最大 Java 堆大小?

python - matplotlib 的 histogramdd 是如何工作的?

java - Webdriver showModalDialog

java - spring 表单标签的 ESAPI 实现

numpy - numpy中对数对数直方图的线性回归

Python:Pandas 绘制具有居中 x 值的直方图

opencv - 具有 double 值的一维直方图opencv

java - POM maven 父问题如何

java - 如何获取Android操作系统中注册的所有 Activity ?