TreeMap の値を使用してヒストグラムを出力しようとしています。最小の数値をベースとして使用しており、数値とベースの比率によってヒストグラム バーの高さが決まります。以下は私のコードです。アスタリスク「*」で示される水平バーを出力します。ベース (値 1) には 2 つの星があります。ただし、問題は、他のすべてのバーにも 2 つの星があり、ベースと変わらないように見えることです。
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 未満です。違いを視覚的に拡大する方法を知りたいですか? 端末でヒストグラムを出力しているため、画像をファイルとして保存できない限り、グラフィカルヒストグラムライブラリを使用できません。