2013-02-06 13 views
8

Aby uzyskać dostęp do mojego serwera, jestem zmuszony pracować ze starą aplikacją terminalową tekstową, która nie ma okien X. Najlepsze, co robię, to emacs/ESS.Funkcje drukowania ASCII dla R

Często chcę tworzyć proste wykresy, takie jak histogramy i wykresy rozproszenia, i nie trzeba przechodzić przez kłopoty z przeniesieniem pliku do komputera z wyświetlaczem graficznym.

Czy istnieje biblioteka graficzna R z terminalem tekstowym?

+2

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

Odpowiedz

16

Jest wiele rzeczy, które mogą to zrobić. Jest stem w domyślnej R, istnieje thisscat ter funkcja działki, ale najlepsze jest to, że jest to pakiet txtplot na CRAN która robi wykresy rozrzutu, boxplots, barplots, ślady gęstości, acfs i wykresy krzywych (jak funkcja curve ... troche).

Potrzebuję tego tylko raz na jakiś czas - ale jeśli próbuję przekazać przybliżony obraz grafiki w czystym tekście, tak jak czasami potrzebuję, to jest to ratowanie życia.

W przeszłości napisałem krótki fragment kodu R, który tworzył grafiki ascii w bardzo szybkim czasie (jak boczny wykres słupkowy lub wykres słupkowo-liśćkowy z numerami zastąpionymi symbolami, który rozwiązał problem Miałem) - ale nie zachowałem go, ponieważ rdzeń obejmuje głównie to terytorium.

Oczywiście funkcja "stołu" generuje wyjście ASCII i można nim manipulować w celu wykonania interesujących/użytecznych rzeczy semigraficznych.

Istnieje również pakiet ascii, który może być użyty do renderowania różnych obiektów R w formie ASCII w podobny sposób do Sweave - przydatny do formatowania tabel i tak dalej. Po prostu formatowanie tabeli w ascii nie jest tym, do czego służy, ale możesz nadal korzystać z niego przy odrobinie pracy i odpowiednim formacie wyjściowym.

przykładowe dane wyjściowe txtplot:

wykres punktowy:

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

ACF Opis:

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

ślad gęstość

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

Wykres pudełkowy:

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

krzywa działki: wykres

> 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 

Dodaj w funkcji stem z domyślnymi grafiki R:

> stem(log(islands,10)) 

    The decimal point is at the | 

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

i masz sporo reportażowy.

+0

Dzięki Glen, to jest niesamowite !!! –

Powiązane problemy