2013-02-06 14 views
8

Per accedere al mio server, sono costretto a lavorare con una vecchia applicazione di testo testuale che non ha X windows. La cosa migliore che ho è emacs/ESS.Funzioni di traccia ASCII per R

Spesso, desidero creare grafici rudimentali come istogrammi e grafici a dispersione e non devono passare attraverso il problema del trasferimento del file su un computer con un display grafico.

Esiste una libreria grafica R basata su terminale di testo?

+2

[qui] (http://stackoverflow.com/questions/9151884/how-can-i-generate-ascii-graphical-output-from-r) – user189035

risposta

16

Ci sono un certo numero di cose che possono fare pezzi di esso. C'è stem in default R, c'è la funzione di trama thisscat, ma soprattutto, c'è il pacchetto txtplot su CRAN che fa grafici a dispersione, grafici a scatole, barattoli, tracce di densità, acp e trame (come la funzione curve ...).

L'ho solo bisogno di tanto in tanto - ma se sto cercando di trasmettere un'idea approssimativa di una grafica in puro testo come a volte ho bisogno di, è un salvavita.

In passato ho scritto un breve pezzo di codice R che rendeva grafica ascii tally-style in un tempo molto veloce (come un diagramma a barre laterale o un diagramma stelo-foglia con i numeri sostituiti dai simboli, che risolveva un problema Ho avuto) - ma non l'ho tenuto da quando gambo copre principalmente quel territorio.

Ovviamente la funzione 'tabella' produce output ascii e può essere manipolata per fare cose semigrafiche interessanti/utili.

C'è anche pacchetto ascii che potrebbe essere utilizzato per rendere vari R oggetti in forma ASCII in modo simile a Sweave - comodo per formattare tabelle e così via. La semplice formattazione di un tavolo in ascii non è esattamente ciò che è utile, ma potresti comunque riuscire a farne un uso con un po 'di lavoro e il giusto formato di output.

esempio di output da txtplot:

scatter plot:

> with(cars,txtplot(speed,dist)) 
    +----+-----------+------------+-----------+-----------+--+ 
120 +             * + 
    |              | 
100 +              + 
    |             * * | 
    80 +       *   *     + 
    |          *  * * | 
    60 +       *    *    + 
    |        * * * *  *  | 
    40 +      *  * * * *    + 
    |    *  * * * * * *    | 
    20 +   *  * * * * * *       + 
    |   * * * *         | 
    | *  * *           | 
    0 +----+-----------+------------+-----------+-----------+--+ 
      5   10   15   20   25 

ACF trama:

> txtacf(ldeaths) 
     +-+--------------+--------------+--------------+--------+ 
    1 + *              + 
     | *              | 
     | * *      * * *     | 
    0.5 + * *      * * *     + 
     | * * *     * * * * *     | 
     | * * *     * * * * *     | 
     | * * *     * * * * *     | 
    0 + * * * * * * * * * * * * * * * * * * * * * + 
     |   * * * * *     * * * * * | 
     |   * * * * *     * * * * * | 
     |   * * * * *      * * * * | 
-0.5 +    * * *      * * *  + 
     |    * * *       *  | 
     +-+--------------+--------------+--------------+--------+ 
     0    0.5    1    1.5   

traccia Densità:

> txtdensity(rnorm(100,m=5,s=.1)) 
    +------+----------+----------+----------+----------+-------+ 
    |       *****       | 
4 +       ** ***      + 
    |       *  ***      | 
    |      **   ***     | 
3 +      **   ***     + 
    |      ***    **     | 
    |     *****     **    | 
2 +    ***      **    + 
    |    ***       **    | 
    |   **        **   | 
1 +   **        ***   + 
    |   ***         ******  | 
    | ********           *** | 
    +------+----------+----------+----------+----------+-------+ 
     4.8  4.9   5   5.1  5.2  

box plot:

> vc <- ToothGrowth[,2]=="VC" 
> oj <- ToothGrowth[,2]=="OJ" 
> txtboxplot(ToothGrowth[vc,1],ToothGrowth[oj,1]) 
     5  10  15  20  25  30  35 
    |----+-------+--------+--------+--------+--------+-------+--| 
        +--------+-----------+      
1 -------------|  |   |------------------  
        +--------+-----------+      
         +------------+----+     
2   -------------|   | |---------   
         +------------+----+     
Legend: 1=ToothGrowth[vc, 1], 2=ToothGrowth[oj, 1] 

curva trama: grafico

> txtcurve(sin(pi*x),from=0,to=2) 
     +--+-----------+------------+------------+-----------+--+ 
    1 +   *********         + 
     |  ***  **         | 
     |  **   **        | 
    0.5 +  **    **        + 
     | **     **        | 
     | *      **       | 
    0 + *      **      * + 
     |       *      * | 
     |        **     ** | 
-0.5 +        ***    **  + 
     |        **   **  | 
     |         **  ***  | 
    -1 +         *********   + 
     +--+-----------+------------+------------+-----------+--+ 
     0   0.5   1   1.5   2 

bar:

> txtbarchart(as.factor(res),pch="|") 
    +--+------------+------------+------------+------------+--+ 
50 + |              + 
    | |              | 
40 + |              + 
    | |              | 
30 + |       |       + 
    | |       |       | 
    | |       |       | 
20 + |       |       | + 
    | |       |       | | 
10 + |       |       | + 
    | |       |       | | 
    0 + |       |       | + 
    +--+------------+------------+------------+------------+--+ 
     1   1.5   2   2.5   3 
Legend: 1=A, 2=B, 3=C 

Aggiungere nella funzione stem dalla grafica di default R:

> stem(log(islands,10)) 

    The decimal point is at the | 

    1 | 1111112222233444 
    1 | 5555556666667899999 
    2 | 3344 
    2 | 59 
    3 | 
    3 | 5678 
    4 | 012 

e si ha un bel po ' di copertura.

+0

Grazie Glen, è fantastico !!! –