2013-02-06 4 views
8

Um auf meinen Server zugreifen zu können, muss ich mit einer alten Text-Terminal-Anwendung arbeiten, die keine X-Fenster hat. Das Beste, was ich habe, ist Emacs/ESS.ASCII-Plotfunktionen für R

Oft möchte ich eine rudimentäre Diagramme wie Histogramme und Streudiagramme machen und muss nicht die Mühe der Übertragung der Datei auf einen Computer mit einem Grafikdisplay gehen.

Gibt es eine textterminalbasierte R-Grafikbibliothek?

+2

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

Antwort

16

Es gibt eine Reihe von Dingen, die etwas davon tun können. Es gibt stem in Standard R, gibt es thisscat ter Plot-Funktion, aber das Beste von allem, gibt es das Paket txtplot auf CRAN, die Scatterplots, Boxplots, Barplots, Dichte Spuren, acfs und Plots Kurven (wie die curve Funktion ... irgendwie) tut.

Ich brauche es nur hin und wieder - aber wenn ich versuche, eine grobe Idee einer Grafik in reinem Text zu vermitteln, wie ich manchmal brauche, ist es ein Lebensretter.

In der Vergangenheit schrieb ich ein kurzes Stück R-Code, der in sehr kurzer Zeit eine Tally-artige ASCII-Grafik erzeugte (wie ein seitliches Balkart oder ein Stem-and-Leaf-Plot mit den durch Symbole ersetzten Zahlen) Ich hatte) - aber ich habe es nicht behalten, da der Stamm dieses Gebiet größtenteils bedeckt.

Natürlich erzeugt die "Tabellen" -Funktion ASCII-Ausgabe und kann manipuliert werden, um einige interessante/nützliche semigrafische Dinge zu tun.

ist es auch das Paket ascii die verwendet werden könnten verschiedene R machen Objekte in ascii Form in ähnlicher Weise wie Sweave - praktisch für Tabellen Formatierung und so weiter. Einfach eine Tabelle in ascii zu formatieren, ist nicht wirklich, wofür sie ist, aber mit ein wenig Arbeit und dem richtigen Ausgabeformat könnte man sie trotzdem nutzen.

Beispielausgabe txtplot:

Streuplot:

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

ACF Grundstück:

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

Dichteverlauf:

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

Boxdiagramm:

> 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] 

Kurve Grundstück:

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

Balkendiagramm:

> 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 

in der stem Funktion von Standard-R Grafik hinzufügen:

> stem(log(islands,10)) 

    The decimal point is at the | 

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

und Sie haben ziemlich viel der Berichterstattung.

+0

Danke Glen, das ist genial !!! –