Home

Awesome

txtplot

Text based plots in R.

Basic plotting function

require(stats)
txtplot(cars[,1], cars[,2])
    +----+------------+------------+-----------+------------+--+
120 +                                                     *    +
    |                                                          |
100 +                                                          +
    |                                                     * *  |
 80 +                           *         *                    +
    |                                        *       *    *    |
 60 +                           *              *               +
    |                              *    * *    *       *       |
 40 +                         *      *  * *  *                 +
    |                 *       * *    *  *    * *               |
 20 +         *       *  * *  * *  *                           +
    |            *    *  * *                                   |
    |  *      *    *                                           |
  0 +----+------------+------------+-----------+------------+--+
         5           10           15          20           25   

Can include axis labels when desired

txtplot(cars[,1], cars[,2], xlab = "speed", ylab = "distance")
      +----+-----------+------------+-----------+-----------+--+
  120 +                                                   *    +
      |                                                        |
d 100 +                                                   *    +
i     |                                    *                *  |
s  80 +                          *         *                   +
t     |                                       * *    *    *    |
a  60 +                          *  *      *    *      *       +
n     |                        *         * *  * *              |
c  40 +                *       * *    *  *    * *              +
e     |         *      *  * *  * *  *                          |
   20 +           *    *  * *       *                          +
      |  *      *    *                                         |
    0 +----+-----------+------------+-----------+-----------+--+
           5          10           15          20          25   
                                speed                           

Text based density plot

txtdensity(rnorm(500))
0.4 +-----------+--------------+-------------+--------------+--+
    |                       ****                               |
    |                      **   **                             |
    |                     **     **                            |
0.3 +                   ***       ****                         +
    |                 ***            **                        |
    |                **               **                       |
0.2 +               **                 **                      +
    |               *                   *                      |
    |              *                    **                     |
0.1 +            **                      ***                   +
    |           **                         ****                |
    |         ***                             ***              |
  0 +  ********                                 *************  +
    +-----------+--------------+-------------+--------------+--+
               -2              0             2              4   

Text based plotting of functions

txtcurve(x/(x+1), 0, 4, xlab = "Emax model")
    +--+------------+------------+-------------+------------+--+
0.8 +                                        ****************  +
    |                              ***********                 |
    |                       *******                            |
0.6 +                 ******                                   +
    |              ****                                        |
    |           ***                                            |
0.4 +         **                                               +
    |       **                                                 |
0.2 +     **                                                   +
    |    **                                                    |
    |   *                                                      |
  0 +  *                                                       +
    +--+------------+------------+-------------+------------+--+
       0            1            2             3            4   
                             Emax model                         

Text based acf

txtacf(rnorm(100))
     +--+------------+------------+------------+------------+--+
   1 +  *                                                      +
     |  *                                                      |
 0.8 +  *                                                      +
     |  *                                                      |
 0.6 +  *                                                      +
     |  *                                                      |
 0.4 +  *                                                      +
     |  *                                                      |
 0.2 +  *    *  *                                              +
     |  *    *  *                                   *     *    |
   0 +  * *  *  * *  * *  *  * *  *  * *  * *  *  * *  *  * *  +
     |            *  *    *          * *  * *  *  *            |
-0.2 +            *       *            *                       +
     +--+------------+------------+------------+------------+--+
        0            5           10           15           20   

Text based barchart

x <- factor(c("orange", "orange", "red", "green", "green", "red",
             "yellow", "purple", "purple", "orange"))
txtbarchart(x)
   +--+------------+-------------+-------------+------------+--+
30 +               *                                           +
   |               *                                           |
25 +               *                                           +
   |               *                                           |
20 +  *            *             *             *               +
   |  *            *             *             *               |
15 +  *            *             *             *               +
10 +  *            *             *             *            *  +
   |  *            *             *             *            *  |
 5 +  *            *             *             *            *  +
   |  *            *             *             *            *  |
 0 +  *            *             *             *            *  +
   +--+------------+-------------+-------------+------------+--+
      1            2             3             4            5   
Legend: 1=green, 2=orange, 3=purple, 4=red, 5=yellow

Text based boxplots

rand1 <- rnorm(100, 1, 2)
rand2 <- rnorm(50, 2, 2)
rand3 <- rnorm(50, 2, 5)
txtboxplot(rand1)
  -4        -2         0          2         4         6         
 |-+---------+---------+----------+---------+---------+--------|
                      +------+--------+                         
    ------------------|      |        |--------------------     
                      +------+--------+                         
txtboxplot(rand1, rand2, rand3)
          -5               0               5              10    
 |---------+---------------+---------------+---------------+---|
                          +---+-----+                           
1              -----------|   |     |-------------              
                          +---+-----+                           
                               +--+-----+                       
2                       -------|  |     |-----------            
                               +--+-----+                       
                        +--------+-----+                        
3   --------------------|        |     |-------------------     
                        +--------+-----+                        
Legend: 1=rand1, 2=rand2, 3=rand3

Text based image plots (contributed by Ivan Krylov)

txtimage(datasets::volcano, legend = FALSE)
01111111111111111111111111111111111111111111000010000000000000000000000000000000
11111111111111111111111111222211111111111111111111100000000000000000000000000000
11111111111111111222333333333332222211111111111111111111000000000000000000000000
11111111122222223344444445544444332222222222111111111100000000000000000000000000
11111112222333444555566666666555443333222222222211111111110000000000000000000000
11111112223344555667777888877766655443333222222222111111111110000000000000000000
11112223334445566778888888888877665444333333333222222222222111100000000000000000
11122334445566677889888888888887665544433333333333334444332222111100000000000000
11223444555677788999888877778777666555444444444444444444443322211111000000000000
12233445566778899999877766666777766665554444444444444444433332221111111000000000
12233445667788999999877665555667777766665555555555444444433332222211111110000000
11233455667788999999876665555667777777666666665555544444433333222222211111110000
11223445667788899999877666666677788887766666666655554444444333332222221111111100
11222334566778899999988777777778888887777777776665555555444443333322222111111110
11122233456677889999998888888888888887777777777666555555555554433332221111111100
01112223455677888899999888888887777777766677777666655555555555444333221111000000
00111223345667777888888888877766666666666666666666555555555555544432211000000000
01111122334566666777777777776655555555555555555555555555555555544332111000000000
00111112223344555566676666665555554444444444444444445555555555444322111110000000
00011111122333344445566665555444443333333333344444444444444444433332211110000000
00000111112222333344455555544433332222223333333333333333333333333322111110000000
00001111111222233334444444443332222222222222222222222222222233322221111100000000
00011111111122223333444444333222222212222222222222222222222222222211111000000000
00011111111122222333333333222211111111111122222222221122222222222211100000000000
00001111111112222222233322222111111111111111122221111111222222222111100000000000
## this works if your terminal supports shade/block characters
txtimage(datasets::volcano, alphabet = " \u2591\u2592\u2593\u2588", legend = TRUE)
                                                                                
                          ░░░░                                                  
                 ░░░░░░░░░░░░░░░░░░░                                            
         ░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░                                    
       ░░░░░░░▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▒▒▒▒▒░░░░░░░░░░░░░░                                
       ░░░░░▒▒▒▒▒▓▓▓▓▓▓████▓▓▓▓▓▓▒▒▒▒░░░░░░░░░░░░░                              
    ░░░░░░▒▒▒▒▒▓▓▓▓███████████▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░                     
   ░░░░▒▒▒▒▒▓▓▓▓▓██████████████▓▓▓▒▒▒▒▒░░░░░░░░░░░░░▒▒▒▒░░░░░░                  
  ░░░▒▒▒▒▒▒▓▓▓▓█████████▓▓▓▓█▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░                 
 ░░░░▒▒▒▒▓▓▓▓████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░                
 ░░░░▒▒▒▓▓▓▓█████████▓▓▓▓▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░              
  ░░░▒▒▒▓▓▓▓█████████▓▓▓▓▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░           
  ░░░▒▒▒▓▓▓▓█████████▓▓▓▓▓▓▓▓▓▓▓▓████▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░          
  ░░░░░▒▒▓▓▓▓██████████▓▓▓▓▓▓▓▓██████▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░         
   ░░░░░▒▒▓▓▓▓███████████████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░          
    ░░░░▒▒▒▓▓▓█████████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░          
     ░░░░▒▒▓▓▓▓▓▓██████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░           
      ░░░░▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░            
       ░░░░░▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░            
         ░░░░░░▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░           
          ░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░            
           ░░░░░░░░▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░             
            ░░░░░░░░▒▒▒▒▒▒░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░              
            ░░░░░░░░░░░░░░░░░░            ░░░░░░░░░   ░░░░░░░░░░░░              
             ░░░░░░░░░░░░░░░░                ░░░░       ░░░░░░░░░               

 94 ‘ ’ 114 ‘░’ 134 ‘▒’ 154 ‘▓’ 174 ‘█’ 194