このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
今日は、利用頻度を整形して出力してみる。
Perl にはフォーマット機能というのがある。
これを利用して見やすく出力してみよう。
# 出力用の書式を定義する。
# 書式で利用する変数は事前に定義。
my ($num, $rr, $gg, $bb, $count, $ratio);
# 毎ページ先頭に出力するヘッダ。自由な文字列を書ける。
# ピリオド 1 つの行で終了する。
format STDOUT_TOP =
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
.
# レコード用の書式。書式行と、変数行のペアとなる。
# これもピリオド 1 つの行で終了する。
# @ は対応する変数に置換される。
# < は左寄せ、> は右寄せ。他にもある。
# 特別な記号以外はそのまま出力される。
format STDOUT =
@@<< [@>>, @>>, @>>] @>>>>> (@>>>>>>%)
'#', $num, $rr, $gg, $bb, $count, $ratio
.
# $= はページの行数を決める。
# 今回はヘッダ 3 行とデータ 20 行で 23 行とする。
$= = 23;
# $^L ページ区切りに出力される文字。なしにしておく。
$^L = "";
# 割合を表示するために、全ピクセル数を計算しておく。
my $total = @$data * @{$data->[0]};
# レポート開始。
foreach $num (0 .. $#freq) {
# カラーテーブルを参照して、RGB 値を得る。
# unpack_rgb 関数は古い日記参照。
($rr, $gg, $bb) = unpack_rgb($colors->[$num]);
# 頻度を書式に割り当てた変数に格納する。
$count = $freq[$num];
# 割合は小数を使うので、整数演算を無効にしておく。
no integer;
# 出力前に小数以下 2 桁分で書式化しておく。
$ratio = sprintf('%.2f', $count / $total * 100);
# 頻度を出力する。
write;
}
# 最後に、色数を出力する。
# ヒアドキュメント構文だ。<<"終端記号" と書くことで、
# 次の行から終端記号が単独である行までを
# 改行も含めてそのまま文字列として扱う。
# << の後がダブルクォートなので変数も展開される。
print <<"END_OF_DATA";
----------------------------------------
Total $unique colors.
----------------------------------------
END_OF_DATA
さて、実行して出力してみよう。
ばらつきが激しいことが良く分かる。
全く使用されていない色も目立つ。
さて、この結果をどう考えるか。
216 色のものを出力してみたものを書いておく。
ちょっと長いので、行数稼ぎ。
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#0 [ 0, 0, 0] 2190 ( 3.24%)
#1 [ 51, 0, 0] 380 ( 0.56%)
#2 [102, 0, 0] 165 ( 0.24%)
#3 [153, 0, 0] 16 ( 0.02%)
#4 [204, 0, 0] 1 ( 0.00%)
#5 [255, 0, 0] 0 ( 0.00%)
#6 [ 0, 51, 0] 1869 ( 2.77%)
#7 [ 51, 51, 0] 2221 ( 3.29%)
#8 [102, 51, 0] 810 ( 1.20%)
#9 [153, 51, 0] 252 ( 0.37%)
#10 [204, 51, 0] 26 ( 0.04%)
#11 [255, 51, 0] 0 ( 0.00%)
#12 [ 0, 102, 0] 12 ( 0.02%)
#13 [ 51, 102, 0] 196 ( 0.29%)
#14 [102, 102, 0] 320 ( 0.47%)
#15 [153, 102, 0] 154 ( 0.23%)
#16 [204, 102, 0] 51 ( 0.08%)
#17 [255, 102, 0] 0 ( 0.00%)
#18 [ 0, 153, 0] 0 ( 0.00%)
#19 [ 51, 153, 0] 1 ( 0.00%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#20 [102, 153, 0] 15 ( 0.02%)
#21 [153, 153, 0] 61 ( 0.09%)
#22 [204, 153, 0] 14 ( 0.02%)
#23 [255, 153, 0] 0 ( 0.00%)
#24 [ 0, 204, 0] 0 ( 0.00%)
#25 [ 51, 204, 0] 0 ( 0.00%)
#26 [102, 204, 0] 0 ( 0.00%)
#27 [153, 204, 0] 1 ( 0.00%)
#28 [204, 204, 0] 12 ( 0.02%)
#29 [255, 204, 0] 2 ( 0.00%)
#30 [ 0, 255, 0] 0 ( 0.00%)
#31 [ 51, 255, 0] 0 ( 0.00%)
#32 [102, 255, 0] 0 ( 0.00%)
#33 [153, 255, 0] 0 ( 0.00%)
#34 [204, 255, 0] 0 ( 0.00%)
#35 [255, 255, 0] 0 ( 0.00%)
#36 [ 0, 0, 51] 1722 ( 2.55%)
#37 [ 51, 0, 51] 100 ( 0.15%)
#38 [102, 0, 51] 99 ( 0.15%)
#39 [153, 0, 51] 22 ( 0.03%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#40 [204, 0, 51] 3 ( 0.00%)
#41 [255, 0, 51] 0 ( 0.00%)
#42 [ 0, 51, 51] 11705 ( 17.34%)
#43 [ 51, 51, 51] 8104 ( 12.01%)
#44 [102, 51, 51] 1942 ( 2.88%)
#45 [153, 51, 51] 245 ( 0.36%)
#46 [204, 51, 51] 16 ( 0.02%)
#47 [255, 51, 51] 0 ( 0.00%)
#48 [ 0, 102, 51] 215 ( 0.32%)
#49 [ 51, 102, 51] 3343 ( 4.95%)
#50 [102, 102, 51] 5746 ( 8.51%)
#51 [153, 102, 51] 886 ( 1.31%)
#52 [204, 102, 51] 63 ( 0.09%)
#53 [255, 102, 51] 2 ( 0.00%)
#54 [ 0, 153, 51] 0 ( 0.00%)
#55 [ 51, 153, 51] 3 ( 0.00%)
#56 [102, 153, 51] 248 ( 0.37%)
#57 [153, 153, 51] 526 ( 0.78%)
#58 [204, 153, 51] 156 ( 0.23%)
#59 [255, 153, 51] 2 ( 0.00%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#60 [ 0, 204, 51] 0 ( 0.00%)
#61 [ 51, 204, 51] 0 ( 0.00%)
#62 [102, 204, 51] 0 ( 0.00%)
#63 [153, 204, 51] 12 ( 0.02%)
#64 [204, 204, 51] 75 ( 0.11%)
#65 [255, 204, 51] 19 ( 0.03%)
#66 [ 0, 255, 51] 0 ( 0.00%)
#67 [ 51, 255, 51] 0 ( 0.00%)
#68 [102, 255, 51] 0 ( 0.00%)
#69 [153, 255, 51] 0 ( 0.00%)
#70 [204, 255, 51] 0 ( 0.00%)
#71 [255, 255, 51] 16 ( 0.02%)
#72 [ 0, 0, 102] 2 ( 0.00%)
#73 [ 51, 0, 102] 0 ( 0.00%)
#74 [102, 0, 102] 0 ( 0.00%)
#75 [153, 0, 102] 2 ( 0.00%)
#76 [204, 0, 102] 3 ( 0.00%)
#77 [255, 0, 102] 0 ( 0.00%)
#78 [ 0, 51, 102] 973 ( 1.44%)
#79 [ 51, 51, 102] 1128 ( 1.67%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#80 [102, 51, 102] 299 ( 0.44%)
#81 [153, 51, 102] 33 ( 0.05%)
#82 [204, 51, 102] 8 ( 0.01%)
#83 [255, 51, 102] 2 ( 0.00%)
#84 [ 0, 102, 102] 152 ( 0.23%)
#85 [ 51, 102, 102] 3094 ( 4.58%)
#86 [102, 102, 102] 4879 ( 7.23%)
#87 [153, 102, 102] 626 ( 0.93%)
#88 [204, 102, 102] 20 ( 0.03%)
#89 [255, 102, 102] 1 ( 0.00%)
#90 [ 0, 153, 102] 0 ( 0.00%)
#91 [ 51, 153, 102] 37 ( 0.05%)
#92 [102, 153, 102] 1356 ( 2.01%)
#93 [153, 153, 102] 1435 ( 2.13%)
#94 [204, 153, 102] 390 ( 0.58%)
#95 [255, 153, 102] 22 ( 0.03%)
#96 [ 0, 204, 102] 0 ( 0.00%)
#97 [ 51, 204, 102] 0 ( 0.00%)
#98 [102, 204, 102] 5 ( 0.01%)
#99 [153, 204, 102] 123 ( 0.18%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#100 [204, 204, 102] 197 ( 0.29%)
#101 [255, 204, 102] 144 ( 0.21%)
#102 [ 0, 255, 102] 0 ( 0.00%)
#103 [ 51, 255, 102] 0 ( 0.00%)
#104 [102, 255, 102] 0 ( 0.00%)
#105 [153, 255, 102] 1 ( 0.00%)
#106 [204, 255, 102] 4 ( 0.01%)
#107 [255, 255, 102] 135 ( 0.20%)
#108 [ 0, 0, 153] 0 ( 0.00%)
#109 [ 51, 0, 153] 0 ( 0.00%)
#110 [102, 0, 153] 0 ( 0.00%)
#111 [153, 0, 153] 0 ( 0.00%)
#112 [204, 0, 153] 0 ( 0.00%)
#113 [255, 0, 153] 0 ( 0.00%)
#114 [ 0, 51, 153] 1 ( 0.00%)
#115 [ 51, 51, 153] 1 ( 0.00%)
#116 [102, 51, 153] 0 ( 0.00%)
#117 [153, 51, 153] 0 ( 0.00%)
#118 [204, 51, 153] 0 ( 0.00%)
#119 [255, 51, 153] 1 ( 0.00%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#120 [ 0, 102, 153] 0 ( 0.00%)
#121 [ 51, 102, 153] 280 ( 0.41%)
#122 [102, 102, 153] 802 ( 1.19%)
#123 [153, 102, 153] 74 ( 0.11%)
#124 [204, 102, 153] 6 ( 0.01%)
#125 [255, 102, 153] 2 ( 0.00%)
#126 [ 0, 153, 153] 0 ( 0.00%)
#127 [ 51, 153, 153] 34 ( 0.05%)
#128 [102, 153, 153] 1305 ( 1.93%)
#129 [153, 153, 153] 1407 ( 2.08%)
#130 [204, 153, 153] 195 ( 0.29%)
#131 [255, 153, 153] 10 ( 0.01%)
#132 [ 0, 204, 153] 0 ( 0.00%)
#133 [ 51, 204, 153] 0 ( 0.00%)
#134 [102, 204, 153] 1 ( 0.00%)
#135 [153, 204, 153] 260 ( 0.39%)
#136 [204, 204, 153] 446 ( 0.66%)
#137 [255, 204, 153] 69 ( 0.10%)
#138 [ 0, 255, 153] 0 ( 0.00%)
#139 [ 51, 255, 153] 0 ( 0.00%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#140 [102, 255, 153] 0 ( 0.00%)
#141 [153, 255, 153] 4 ( 0.01%)
#142 [204, 255, 153] 15 ( 0.02%)
#143 [255, 255, 153] 42 ( 0.06%)
#144 [ 0, 0, 204] 0 ( 0.00%)
#145 [ 51, 0, 204] 0 ( 0.00%)
#146 [102, 0, 204] 0 ( 0.00%)
#147 [153, 0, 204] 0 ( 0.00%)
#148 [204, 0, 204] 0 ( 0.00%)
#149 [255, 0, 204] 0 ( 0.00%)
#150 [ 0, 51, 204] 0 ( 0.00%)
#151 [ 51, 51, 204] 0 ( 0.00%)
#152 [102, 51, 204] 0 ( 0.00%)
#153 [153, 51, 204] 0 ( 0.00%)
#154 [204, 51, 204] 0 ( 0.00%)
#155 [255, 51, 204] 0 ( 0.00%)
#156 [ 0, 102, 204] 0 ( 0.00%)
#157 [ 51, 102, 204] 0 ( 0.00%)
#158 [102, 102, 204] 1 ( 0.00%)
#159 [153, 102, 204] 0 ( 0.00%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#160 [204, 102, 204] 0 ( 0.00%)
#161 [255, 102, 204] 0 ( 0.00%)
#162 [ 0, 153, 204] 0 ( 0.00%)
#163 [ 51, 153, 204] 0 ( 0.00%)
#164 [102, 153, 204] 48 ( 0.07%)
#165 [153, 153, 204] 104 ( 0.15%)
#166 [204, 153, 204] 12 ( 0.02%)
#167 [255, 153, 204] 5 ( 0.01%)
#168 [ 0, 204, 204] 0 ( 0.00%)
#169 [ 51, 204, 204] 0 ( 0.00%)
#170 [102, 204, 204] 0 ( 0.00%)
#171 [153, 204, 204] 148 ( 0.22%)
#172 [204, 204, 204] 595 ( 0.88%)
#173 [255, 204, 204] 89 ( 0.13%)
#174 [ 0, 255, 204] 0 ( 0.00%)
#175 [ 51, 255, 204] 0 ( 0.00%)
#176 [102, 255, 204] 0 ( 0.00%)
#177 [153, 255, 204] 0 ( 0.00%)
#178 [204, 255, 204] 131 ( 0.19%)
#179 [255, 255, 204] 281 ( 0.42%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#180 [ 0, 0, 255] 0 ( 0.00%)
#181 [ 51, 0, 255] 0 ( 0.00%)
#182 [102, 0, 255] 0 ( 0.00%)
#183 [153, 0, 255] 0 ( 0.00%)
#184 [204, 0, 255] 0 ( 0.00%)
#185 [255, 0, 255] 0 ( 0.00%)
#186 [ 0, 51, 255] 0 ( 0.00%)
#187 [ 51, 51, 255] 0 ( 0.00%)
#188 [102, 51, 255] 0 ( 0.00%)
#189 [153, 51, 255] 0 ( 0.00%)
#190 [204, 51, 255] 0 ( 0.00%)
#191 [255, 51, 255] 0 ( 0.00%)
#192 [ 0, 102, 255] 0 ( 0.00%)
#193 [ 51, 102, 255] 0 ( 0.00%)
#194 [102, 102, 255] 0 ( 0.00%)
#195 [153, 102, 255] 0 ( 0.00%)
#196 [204, 102, 255] 0 ( 0.00%)
#197 [255, 102, 255] 0 ( 0.00%)
#198 [ 0, 153, 255] 0 ( 0.00%)
#199 [ 51, 153, 255] 0 ( 0.00%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#200 [102, 153, 255] 0 ( 0.00%)
#201 [153, 153, 255] 0 ( 0.00%)
#202 [204, 153, 255] 0 ( 0.00%)
#203 [255, 153, 255] 0 ( 0.00%)
#204 [ 0, 204, 255] 0 ( 0.00%)
#205 [ 51, 204, 255] 0 ( 0.00%)
#206 [102, 204, 255] 0 ( 0.00%)
#207 [153, 204, 255] 2 ( 0.00%)
#208 [204, 204, 255] 24 ( 0.04%)
#209 [255, 204, 255] 17 ( 0.03%)
#210 [ 0, 255, 255] 0 ( 0.00%)
#211 [ 51, 255, 255] 0 ( 0.00%)
#212 [102, 255, 255] 0 ( 0.00%)
#213 [153, 255, 255] 0 ( 0.00%)
#214 [204, 255, 255] 62 ( 0.09%)
#215 [255, 255, 255] 1916 ( 2.84%)
#216 [ 0, 0, 0] 0 ( 0.00%)
#217 [ 0, 0, 0] 0 ( 0.00%)
#218 [ 0, 0, 0] 0 ( 0.00%)
#219 [ 0, 0, 0] 0 ( 0.00%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#220 [ 0, 0, 0] 0 ( 0.00%)
#221 [ 0, 0, 0] 0 ( 0.00%)
#222 [ 0, 0, 0] 0 ( 0.00%)
#223 [ 0, 0, 0] 0 ( 0.00%)
#224 [ 0, 0, 0] 0 ( 0.00%)
#225 [ 0, 0, 0] 0 ( 0.00%)
#226 [ 0, 0, 0] 0 ( 0.00%)
#227 [ 0, 0, 0] 0 ( 0.00%)
#228 [ 0, 0, 0] 0 ( 0.00%)
#229 [ 0, 0, 0] 0 ( 0.00%)
#230 [ 0, 0, 0] 0 ( 0.00%)
#231 [ 0, 0, 0] 0 ( 0.00%)
#232 [ 0, 0, 0] 0 ( 0.00%)
#233 [ 0, 0, 0] 0 ( 0.00%)
#234 [ 0, 0, 0] 0 ( 0.00%)
#235 [ 0, 0, 0] 0 ( 0.00%)
#236 [ 0, 0, 0] 0 ( 0.00%)
#237 [ 0, 0, 0] 0 ( 0.00%)
#238 [ 0, 0, 0] 0 ( 0.00%)
#239 [ 0, 0, 0] 0 ( 0.00%)
----------------------------------------
Num [ R , G , B ] Count ( Ratio%)
----------------------------------------
#240 [ 0, 0, 0] 0 ( 0.00%)
#241 [ 0, 0, 0] 0 ( 0.00%)
#242 [ 0, 0, 0] 0 ( 0.00%)
#243 [ 0, 0, 0] 0 ( 0.00%)
#244 [ 0, 0, 0] 0 ( 0.00%)
#245 [ 0, 0, 0] 0 ( 0.00%)
#246 [ 0, 0, 0] 0 ( 0.00%)
#247 [ 0, 0, 0] 0 ( 0.00%)
#248 [ 0, 0, 0] 0 ( 0.00%)
#249 [ 0, 0, 0] 0 ( 0.00%)
#250 [ 0, 0, 0] 0 ( 0.00%)
#251 [ 0, 0, 0] 0 ( 0.00%)
#252 [ 0, 0, 0] 0 ( 0.00%)
#253 [ 0, 0, 0] 0 ( 0.00%)
#254 [ 0, 0, 0] 0 ( 0.00%)
#255 [ 0, 0, 0] 0 ( 0.00%)
----------------------------------------
Total 109 colors.
----------------------------------------