古い記事
ランダムジャンプ
新しい記事
作業メモ的な話。
ヒートマップに使いたいので、ターミナルエミュレータで出せる色について調べて、簡単なプログラム書いて確認した。
Macのターミナルでも、Windowsのteratermでも出るやつ。

terminal%20color%20sample

ソース (perl)
#!/usr/bin/env perl
# -*- coding: utf-8 -*-
use strict;
use warnings;

sub rgb2code {
    my ($r, $g, $b) = @_;
    my $v = $r * 36 + $g * 6 + $b + 16;
    return $v;
}

##########
print "基本色:暗め、明るめ\n";
##########

for (my $i = 0; $i <= 7; $i++) {
    my $v = $i;
    printf("\033[48;5;%dm %02X,%3d \033[0m", $v, $v, $v);
}
print "\n";
for (my $i = 8; $i <= 15; $i++) {
    my $v = $i;
    printf("\033[48;5;%dm %02X,%3d \033[0m", $v, $v, $v);
}
print "\n";
print "\n";

##########
print "グレースケール\n";
##########

for (my $i = 232; $i <= 255; $i++) {
    my $v = $i;
    printf("\033[48;5;%dm %02X \033[0m", $v, $v);
}
print "\n";
print "\n";

##########
print "数値順 (Hex,Dec,RGB)\n";
##########

for (my $r = 0; $r <= 5; $r++) {
    for (my $g = 0; $g <= 5; $g++) {
        for (my $b = 0; $b <= 5; $b++) {
            my $v = rgb2code($r, $g, $b);
            printf("\033[48;5;%dm %02X,%3d,%s \033[0m", $v, $v, $v, $r.$g.$b);
        }
        print "\n";
    }
}
print "\n";

##########
print "色相環の配列:赤から紫へ\n";
##########

my ($r, $g, $b) = (5, 0, 0);
for ($g = 0; $g <= 5; $g++) {
    my $v = rgb2code($r, $g, $b);
    printf("\033[48;5;%dm %02X,%3d,%s \033[0m\n", $v, $v, $v, $r.$g.$b);
}
$g = 5;
for ($r = 4; $r >= 0; $r--) {
    my $v = rgb2code($r, $g, $b);
    printf("\033[48;5;%dm %02X,%3d,%s \033[0m\n", $v, $v, $v, $r.$g.$b);
}
$r = 0;
for ($b = 1; $b <= 5; $b++) {
    my $v = rgb2code($r, $g, $b);
    printf("\033[48;5;%dm %02X,%3d,%s \033[0m\n", $v, $v, $v, $r.$g.$b);
}
$b = 5;
for ($g = 4; $g >= 0; $g--) {
    my $v = rgb2code($r, $g, $b);
    printf("\033[48;5;%dm %02X,%3d,%s \033[0m\n", $v, $v, $v, $r.$g.$b);
}
print "\n";

##########
print "プラス値のみのヒートマップ用の配色案\n";
##########

($r, $g, $b) = (5, 0, 0);
for ($g = 0; $g <= 5; $g++) {
    my $v = rgb2code($r, $g, $b);
    printf("\033[48;5;%dm %02X,%3d,%s \033[0m\n", $v, $v, $v, $r.$g.$b);
}
$g = 5;
for ($b = 1; $b <= 4; $b++) {
    my $v = rgb2code($r, $g, $b);
    printf("\033[48;5;%dm %02X,%3d,%s \033[0m\n", $v, $v, $v, $r.$g.$b);
}
print "\n";


参考文献