ANSI цвет специфичная последовательность RGB Bash

pyplot - это API уровня скриптов в matplotlib (его API самого высокого уровня, чтобы делать многое с matplotlib). Он позволяет использовать matplotlib с помощью процедурного интерфейса так же, как вы можете сделать это с помощью Matlab. pyplot имеет понятие «текущая цифра» и «текущие оси», которые все функции делегируют (@tacaswell dixit). Итак, когда вы используете функции, доступные на модуле pyplot, вы рисуете «текущую цифру» и «текущие оси».

Если вы хотите, чтобы «мелкозернистый» контроль где / вы должны использовать объектно-ориентированный API, используя экземпляры Figure и Axes.

Функции, доступные в pyplot, имеют эквивалентный метод в Axes.

Из репо анатомии matplotlib :

  • Figure является контейнером верхнего уровня в этой иерархии. Это общее окно / страница, на которой все нарисовано. Вы можете иметь несколько независимых фигур, а Figure s может содержать несколько осей.

Но ...

  • Большинство построений происходит на Axes. Оси - это фактически область, на которую мы записываем данные, и любые связанные с ней тики / метки / etc. Обычно мы настраиваем Axes с вызовом на подзаговор (который помещает Axes в регулярную сетку), поэтому в большинстве случаев Axes и Subplot являются синонимами.
  • Каждый Axes имеет XAxis и YAxis. Они содержат тики, тики, метки и т. Д.

Если вы хотите узнать анатомию сюжета, вы можете посетить эту ссылку .

29
задан Qix 15 April 2015 в 21:26
поделиться

4 ответа

Это существует, но вместо 16777216 (256 ^ 3) цветов, которые искал OP, есть 216 (6 ^ 3) поровну распределенных цветов в большем наборе из 256 цветов. Пример:

echo -e "\033[38;5;208mpeach\033[0;00m"

Это выведет приятный вид персикового цвета.


Разбирая эту команду: \ 033 [38; 5; 208m

\ 033 - это код перехода. [38; направляет команду на передний план . Если вы хотите изменить цвет фона, вместо этого используйте [48; . 5; - это просто часть последовательности, которая меняет цвет. И самая важная часть, 208 м , выбирает фактический цвет.


В этой 256-цветовой последовательности можно найти 3 набора цветов. Первый набор - это основной набор цветов «конфеты», или значения 0-15. Тогда есть куб распределенных цветов, от 16 до 231. Наконец, есть подробный набор оттенков серого от 232 до 255.

Вы можете найти таблицу со всеми этими значениями здесь: http://bitmote.com/index.php?post/2012/11/19/Using-ANSI-Color-Codes-to-Colorize- Your-Bash-Prompt-на-Linux # 256% 20 (8-бит)% 20colors

44
ответ дан dimo414 15 April 2015 в 21:26
поделиться

В настоящее время истинные последовательности выхода цвета (\ e [38; 2; R; G; Bm) поддерживаются определенными эмуляторами терминала, включая gnome-терминал (с vte> = 0,36), konsole и st [suckless].

Функция не поддерживается некоторыми другими, например, pterm [putty], терминология [просветление], urxvt.

xterm находится посередине: он распознает escape-последовательности, но округляет каждый цвет до ближайшего в 256-цветовой палитре.

2
ответ дан egmont 15 April 2015 в 21:26
поделиться

Нет, нет.

И, к слову, это технически не «управляющие последовательности ANSI», а управляющие коды VT100 (которые были определены задолго до появления графических терминалов и терминов, подобных «RGB»).

-2
ответ дан Some programmer dude 15 April 2015 в 21:26
поделиться

В обоих ответах здесь не упоминается поддержка Truecolor ANSI для цвета 8 бит / с. Это даст цвет RGB, который первоначально запрашивал OP.

Вместо ;5 используйте ;2 и укажите значения R , G и B (0-255) в следующих три контрольных сегмента.

\x1b[38;2;40;177;249m

Чтобы проверить , поддерживает ли ваш терминал Truecolor :

printf "\x1b[38;2;40;177;249mTRUECOLOR\x1b[0m\n"

На моей машине XTerm успешно вывел правильный цвет; хотя терминалы, которые смоделированы после терминалов, которые предшествуют современному цвету RGB, обычно не будут поддерживать truecolor - убедитесь, что вы знаете свою цель, прежде чем использовать этот конкретный вариант escape-кода.


Я также хотел бы отметить 38 и ;5 / ;2 - Blue Ice упомянул , что 38 направляет, а затем 5 меняет цвет , Это немного неверно.

38 - расширенный код цвета переднего плана xterm-256; 30 - 37 - это просто 16-цветовые коды переднего плана (с яркостью, управляемой escape-кодом 1 в некоторых системах, и, возможно, поддерживаемые 90 - 97 нестандартные «яркие» коды), которые поддерживается всеми цветными терминалами, совместимыми с vt100 / xterm.

;2 и ;5 указывают формат цвета, в конечном итоге сообщая терминалу, сколько еще последовательностей нужно извлечь: ;5 задает 8-битный формат (как упомянуто Blue Ice), требующий только еще 1 управляющего сегмента и ;2 указание полного 24-битного формата RGB, требующего 3 управляющих сегмента.

Эти расширенные режимы технически «недокументированы» и полностью определены реализацией. Насколько я знаю и могу исследовать, они не управляются комитетом ANSI.


Для такого наклонного формата 5; (256 цветов) начинается с 16 исходных цветов (темных / светлых, т. е. 30-37 и 90-97) в качестве цветов 0-15.

Исходящие 216 цветов (16-231) образованы смещением значения RGB на 3 бит / с на 16, упакованным в одно значение.

Последние 24 цвета (232-256) имеют оттенки серого, начиная с оттенка, слегка светлее черного, вплоть до оттенка, немного темнее белого. Некоторые эмуляторы интерпретируют эти шаги как линейные приращения от (256 / 24) на всех трех каналах, хотя я встречал некоторые эмуляторы, которые явно определяют эти значения.

Вот функция Javascript, которая выполняет такое преобразование, принимая во внимание все серые.

function rgbToAnsi256(r, g, b) {
    // we use the extended greyscale palette here, with the exception of
    // black and white. normal palette only has 4 greyscale shades.
    if (r === g && g === b) {
        if (r < 8) {
            return 16;
        }

        if (r > 248) {
            return 231;
        }

        return Math.round(((r - 8) / 247) * 24) + 232;
    }

    var ansi = 16
        + (36 * Math.round(r / 255 * 5))
        + (6 * Math.round(g / 255 * 5))
        + Math.round(b / 255 * 5);

    return ansi;
}

Таким образом, вы можете вычислить 256 цветов ANSI из начальных значений RGB, уменьшив их с 8 до 3 бит, чтобы сформировать 256 закодированное значение в событии, которое вы хотите программно сделайте это на терминалах, которые не поддерживают Truecolor.

59
ответ дан Qix 15 April 2015 в 21:26
поделиться