Membuat Visualisasi Data Klasik dengan library(txtplot) di R
Di berbagai tulisan di blog ini, saya telah memberikan gambaran
bagaimana visualisasi data bisa dilakukan di R menggunakan
library(ggplot2). Sebenarnya ggplot2 bukanlah satu-satunya library
yang bisa digunakan untuk melakukan visualisasi data. Kita bisa
menggunakan base dari R untuk melakukan plot() terhadap data
atau plotly untuk membuat visualisasi dinamis.
Namun demikian, ada satu library visualisasi data yang menarik bagi saya. Saya telah menggunakannya beberapa kali pada R versi command line interface di tablet Huawei karena library ini bersifat klasik atau retro.
Alih-alih visualisasi modern, tapi library ini menggunakan teks sebagai alat membentuk grafik.
Bayangkan kalian membuat grafik dengan notepad. Nah, seperti itu kira-kira gambarannya.
Apa saja grafik yang bisa dibuat? Bagaimana caranya? Cekidot.
Data yang Digunakan Sebagai Contoh
Pada tulisan ini, saya akan gunakan data kasus Covid-19 yang saya scrape dari situs worldometers. Saya hanya akan gunakan data 20 negara teratas saja.
| number | country_other | total_cases | total_recovered | 
|---|---|---|---|
| 1 | China | 226035 | 220199 | 
| 2 | USA | 89862019 | 85410289 | 
| 3 | India | 43547809 | 42907327 | 
| 4 | Brazil | 32610830 | 31039055 | 
| 5 | France | 31658727 | 29826046 | 
| 6 | Germany | 28673212 | 26978400 | 
| 7 | UK | 22855499 | 22203099 | 
| 8 | Italy | 18941002 | 17682801 | 
| 9 | Russia | 18445301 | 17873576 | 
| 10 | S. Korea | 18413997 | 18239069 | 
| 11 | Turkey | 15180444 | 15035727 | 
| 12 | Spain | 12890002 | 12294986 | 
| 13 | Vietnam | 10750314 | 9724922 | 
| 14 | Japan | 9418900 | 9195323 | 
| 15 | Argentina | 9394326 | 9184344 | 
| 16 | Australia | 8291345 | 8012561 | 
| 17 | Netherlands | 8210648 | 8070532 | 
| 18 | Iran | 7241648 | 7063652 | 
| 19 | Colombia | 6175181 | 5984546 | 
| 20 | Indonesia | 6097928 | 5923808 | 
Scatterplot
Pertama-tama saya akan buat scatterplot dari total_cases dan
total_recovered. Caranya cukup mudah:
# memanggil library
library(txtplot)
txtplot(df$total_cases,          # sumbu x
        df$total_recovered,      # sumbu y
        xlab = "Cases",    # memberikan label x axis
        ylab = "Recovered" # memberikan label y axis
        )
##         +-+----------+----------+---------+----------+---------+
##   8e+07 +                                                 *    +
##         |                                                      |
## R       |                                                      |
## e 6e+07 +                                                      +
## c       |                                                      |
## o       |                                                      |
## v 4e+07 +                         *                            +
## e       |                  **                                  |
## r       |              *  *                                    |
## e 2e+07 +         * *                                          +
## d       |     ****                                             |
##       0 + *   *                                                +
##         +-+----------+----------+---------+----------+---------+
##           0        2e+07      4e+07     6e+07      8e+07        
##                                 Cases
Density plot
Berikutnya saya akan membuat density plot dari data total_cases.
txtdensity(df$total_cases)
##       +-+----------+-----------+----------+----------+---------+
##       |     *****                                              |
## 3e-08 +     *   **                                             +
##       |    **    **                                            |
##       |   **      **                                           |
##       |   *        **                                          |
## 2e-08 +  **         **                                         +
##       |  *           ***                                       |
##       | **             ***                                     |
##       |                  ***                                   |
## 1e-08 +                    ***                                 +
##       |                      ****                              |
##       |                         *****                   ***    |
##     0 +                             *********************      +
##       +-+----------+-----------+----------+----------+---------+
##         0        2e+07       4e+07      6e+07      8e+07
Boxplot
Berikutnya saya akan membuat boxplot dari data total_cases dan
total_recovered.
txtboxplot(df$total_recovered,
           df$total_cases)
##     0          1e+07       2e+07       3e+07        4e+07       
##  |--+------------+-----------+-----------+------------+--------|
##               +------+-------------+                            
## 1   ----------|      |             |-----------------------     
##               +------+-------------+                            
##               +-------+-------------+                           
## 2   ----------|       |             |----------------------     
##               +-------+-------------+                           
## Legend: 1=df$total_recovered, 2=df$total_cases
Barchart
txtplot juga bisa digunakan untuk membuat barchart. Namun untuk itu,
input dari function ini harus berupa vector bertipe factor.
Misalkan saya hendak membuat barchart dari total_recovered berikut:
# dalam ratusan ribu
tr = round(df$total_recovered / 100000,
           0)
# membuat dalam bentuk factor
bar = rep(df$country_other,tr) %>% factor()
# membuat plot
txtbarchart(bar,
            ylab = "Recovered")
##      +-------------+-------------+------------+-------------+--+
##      |                                                   *     |
##   20 +                                                   *     +
## R    |                                                   *     |
## e 15 +                                                   *     +
## c    |                                                   *     |
## o    |                     *                             *     |
## v 10 +                     *                             *     +
## e    |       *       *     *                             *     |
## r    |       *       *  *  *                           * *     |
## e  5 +       *       *  *  *       *        * *     *  * *     +
## d    |  * *  *       *  *  *     * *  *  *  * *  *  *  * *  *  |
##    0 +  * *  *  *  * *  *  *  *  * *  *  *  * *  *  *  * *  *  +
##      +-------------+-------------+------------+-------------+--+
##                    5            10           15            20   
## Legend: 
## 1=Argentina, 2=Australia, 3=Brazil, 4=China, 5=Colombia, 6=Franc
## e, 7=Germany, 8=India, 9=Indonesia, 10=Iran, 11=Italy, 12=Japan,
##  13=Netherlands, 14=Russia, 15=S. Korea, 16=Spain, 17=Turkey, 18
## =UK, 19=USA, 20=Vietnam
Bagaimana? Mudah kan?
