Gráficos em TTY


8

Surgiu algo que exige que eu trabalhe apenas na linha de comando. Meu trabalho principal é programar (principalmente em Fortran e Octave) e preciso exibir gráficos.

Como um exemplo coxo:

Abro a oitava e digito ezplot('sin(x)') e ele gera o ambiente de exibição X11 não definido e incapaz de abrir a exibição. Existe alguma maneira de visualizar gráficos em TTY?

Obviamente, não espero gráficos impressionantes, mas preciso ver se estou no caminho certo de vez em quando.

Meu algoritmo atual é extremamente ineficiente. Eu print -djpeg foo.jpege, em seguida, scp-lo para o meu computador vizinho. Peça emprestado e continue.


Três perguntas óbvias vêm à mente: qual sistema operacional você está executando em sua máquina desktop? Você está no console do sistema ou conectado remotamente? E, se conectado remotamente, qual protocolo / software você usa para se conectar à máquina remota (por exemplo, SSH usando PuTTY)?
Alexios

1
Você realmente tem duas perguntas diferentes aqui. Existe alguma maneira de visualizar gráficos em TTY? (resposta: aalib ou svgalib); e o não declarado Como imprimir gráficos em ASCII? (gnuplot, cernlib, etc). Você pode esclarecer o que deseja e não como espera alcançá-lo?
dmckee --- ex-moderador gatinho


Um google rápido sugere que a oitava não suporta o aalib diretamente e ninguém se importa, há sinais de que algumas pessoas querem que ele trabalhe com o svgalib, embora eu não saiba se ele realmente funciona.
dmckee --- ex-moderador gatinho

Em uma nota diferente, se o OP não desejar scparquivos o tempo todo, a investigação sshfspoderá ser uma alternativa.
Php

Respostas:


5

Se você simplesmente tiver uma série de .jpegimagens que deseja exibir em um tty, poderá usar aviewou asciiview. Ao chamar asciiviewcom uma imagem, ela converterá a imagem no .pnmformato - usando um programa externo como o NetPBM ou o ImageMagic - antes de passá-la aviewpara exibição. O .pnmé o asciiformato da imagem usado para representar a imagem como um conjunto de caracteres. Para visualizar uma imagem neste formato, basta usar:

$ asciiview foo.jpeg

ou para salvar uma .pnmcópia primeiro:

$ convert foo.jpeg foo.pnm
$ aview foo.pnm

Estes suportam o driver de aalib.


Nenhum dos outros métodos word.

5

Você não pode executar um servidor X em outro tty e alternar para ele quando precisar? Se você tiver uma máquina próxima a você que esteja executando o X, poderá usar o encaminhamento do X11 para que ela seja exibida lá.


Um exemplo disso pode ser encontrado nesta pergunta.
Emanuel Berg

5

A resposta mais direta é usar jp2a : JPEG para ASCII.

Talvez você possa usar a famosa biblioteca de arte ascii: libcaca . Ele ainda permite ver filmes em um terminal , por isso também deve funcionar para jpeg simples.


2

Você pode desenhar diretamente gráficos como ASCII gnuplot;
Defina o tipo de terminal como dumb, é tudo o que você precisa:

$ gnuplot
gnuplot> set terminal dumb
Terminal type set to 'dumb'
Options are 'feed  size 79, 24'
gnuplot> plot sin(x)



    1 ++---------------***---------------+---**-----------+--------**-----++
      +                *  *              +  *  **         +  sin(x) ****** +
  0.8 ++              *   *                 *    *               *    *   ++
      |              *     *               *     *               *     *   |
  0.6 *+             *      *              *     *               *     *  ++
      |*             *      *             *       *             *       *  |
  0.4 +*            *       *             *       *             *       * ++
      |*            *        *            *        *           *        *  |
  0.2 +*           *         *            *        *           *         *++
    0 ++*          *          *          *         *          *          *++
      | *          *          *         *           *         *           *|
 -0.2 ++ *         *          *         *           *         *           *+
      |  *        *           *        *             *        *           *|
 -0.4 ++ *        *            *       *             *       *            *+
      |  *       *              *      *             *      *              *
 -0.6 ++  *      *              *      *             *      *             +*
      |    *    *               *     *               *     *              |
 -0.8 ++   *    *                *   *                 *   *              ++
      +     *  *       +         **  *   +             *  *                +
   -1 ++-----**--------+-----------**----+--------------***---------------++
     -10              -5                 0                5                10

gnuplot>

1
Não está relacionado ao OP, mas noto que ele também possui o terminal canvas , o que é ótimo!

@ Amphiteóth Sim, esse também é interessante - está renderizando em uma tela HTML, certo? Eu teria mencionado se o linkse elinksnavegador modo texto poderia torná-lo.
Volker Siegel

1
Sim, com sth como set output 'output.html'você obtém esse arquivo e, olhando para a fonte, é como JS embutido e chama canvastext.js e gnuplot_common.js . Não sabia disso! Bem útil!

2

Se você estiver usando um programa de terminal capaz de exibir gráficos sixel , por exemplo, um xtermou um de seus derivados, poderá converter imagens em formato sixel com PySixel e output, ou integrar um filtro que imprima os comandos sixel diretamente.

Dessa forma, você terá gráficos em cores verdadeiras (não ASCII) no terminal.


1

Se você estiver em um console TTY no Linux ou FreeBSD, poderá usar o svgalib para mostrar imagens no modo gráfico, sem o X11. A biblioteca pode alternar o console para o modo gráfico - atualmente não é comumente usado hoje, porque o X11 tem suas vantagens.

Há um visualizador de imagens para o console, que pode precisar de alguns ajustes para construí-lo, porque está um pouco desatualizado, mas vale a pena tentar.

O visualizador de imagens zgv- também existe um visualizador semelhante para o X11, chamado xzgvcaso você goste muito da interface.


0

Para gráficos reais, sua melhor (e possivelmente apenas) aposta é svgalib , mas esteja ciente de que ele não tem nada em comum com o X11, portanto, você precisará escrever seu próprio substituto ezplot.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.