8 minute read

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?