Saya sudah merasa penasaran terhadap minuman kopi sejak kecil karena selalu melihat ayah saya membuat dan minum kopi susu setiap hari, dua kali sehari (Pagi dan malam). Saya sendiri pertama kali minum kopi pada umur 10 (karena baru diperbolehkan oleh ibu), dan kopi pertama yang saya minum adalah Kopiko 78c dan rasanya sangat enak untuk saya saat itu. Mungkin karena saya masih kecil saat meminum kopi, keesokan harinya saya langsung kena asam lambung. Namun pengalaman tidak mengenakan itu tidak menghentikan saya untuk tetap mencoba berbagai macam kopi. Mulai dari kopi kotak merk Nescafe, kopi sachet merk Old Town, kopi dari cafe yang mainstream seperti Starbucks, kopi dari cafe yang mempromosikan minumannya sebagai “Artisan Coffee”, hingga pada saat ini saya mencoba belajar untuk mencari biji kopi yang tepat dengan selera saya dan mempelajari teknik menyeduh kopi (Teknik yang saya sering gunakan adalah Cold Drip, yang bisa dikatakan sebagai sebuah varian dari teknik V60).
Maksud saya dalam menyatakan hal tersebut adalah untuk menggambarkan kepada para pembaca bahwa meskipun skill dan pengetahuan saya masih amatiran di hobi ini, saya memiliki antusiasme terhadap kopi yang relatif lebih tinggi dibandingkan orang lain pada umumnya. Dari hobi itu munculah pikiran “Kenapa saya ngga coba buat kopi sebagai topik laporan saya kali ini? Toh orang bisa saja bosan jika data yang saya laporkan selalu mengenai saham…” Long story short, here we are.
Pada laporan ini penulis ingin melihat data historical mengenai perkembangan kopi. Lebih spesifiknya, penulis akan menampilkan visualisasi data mengenai 3 hal: 1. Untuk melihat tren konsumsi kopi di Indonesia. 2. Untuk melihat negara produsen kopi mana yang melakukan export biji kopi terbanyak. 3. Untuk melihat jenis produksi seperti apa yang paling populer: Arabica, Robusta, atau malah keduanya secara bersamaan
Data yang digunakan berasal dari dataset https://www.kaggle.com/datasets/michals22/coffee-dataset?resource=download&select=Coffee_production.csv oleh MICHAŁ SIKORA, yang membahas mengenai produksi, ekspor, impor, dan konsumsi kopi dari beberapa negara dari tahun 1990 hingga 2019. Dari beberapa file yang dilampirkan olehnya, laporan ini akan menggunakan file ‘Coffee_domestic_consumption’, ‘Coffee_export’, dan ‘Coffee_production’. Pembacaan data akan mengggunakan fungsi ‘read_csv()’.
coffee_consumption <- read_csv("data/Coffee_domestic_consumption.csv")## Rows: 55 Columns: 33
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): Country, Coffee type
## dbl (31): 1990/91, 1991/92, 1992/93, 1993/94, 1994/95, 1995/96, 1996/97, 199...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
coffee_export <- read_csv("data/Coffee_export.csv")## Rows: 55 Columns: 32
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): Country
## dbl (31): 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, ...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
coffee_prod <- read_csv("data/Coffee_production.csv")## Rows: 55 Columns: 33
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): Country, Coffee type
## dbl (31): 1990/91, 1991/92, 1992/93, 1993/94, 1994/95, 1995/96, 1996/97, 199...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Berikut adalah tampilan data mentah dari file yang sudah dibaca menggunakan fungsi ‘head()’. Sebagai tambahan, angka produksi/konsumsi yang ditampilkan oleh data adalah dalam satuan Kg (kilogram).
head(coffee_consumption)head(coffee_export)head(coffee_prod)Seperti yang bisa dilihat, ada beberapa bagian yang perlu diperbaiki dari setiap file sebelum data dapat divisualisasikan. Hal utama yang perlu diperbaiki disini adalah tipe data untuk beberapa kolom, dan juga bentuk tabelnya sendiri yang harus dibuat menjadi memanjang kebawah.
Penulis akan memulai dengan memperbaiki data ‘coffee_consumption’. Hal yang akan dilakukan pertama adalah untuk mengubah tabel menjadi memanjang kebawah. Ini dapat dilakukan dengan menggunakan fungsi ‘pivot_longer()’. Selain itu penulis juga akan menghilangkan kolom “Total_domestic_consumption” karena untuk saat ini kolom tersebut tidak diperlukan.
coffee_consumption <- coffee_consumption %>%
mutate(Total_domestic_consumption = NULL) %>% #Menghilangkan kolom Total_domestic_consumption
pivot_longer(!c("Country","Coffee type"), names_to = "year", values_to = "consumed") #Membuat data memanjang kebawah
head(coffee_consumption)Bisa dilihat sekarang bahwa bentuk data sudah diubah untuk mempermudah proses visualisasi data. Namun tipe data yang kita miliki saat ini masih belum tepat. Penulis perlu mengubah tipe data “Country” dan “Coffee type” menjadi bentuk faktor, dan mengubah tipe data “year” menjadi Date.
#Pengubahan isi kolom year
coffee_consumption$year <- sapply(X = as.character(coffee_consumption$year),
FUN = switch,
"1990/91" = "1990",
"1991/92" = "1991",
"1992/93" = "1992",
"1993/94" = "1993",
"1994/95" = "1994",
"1995/96" = "1995",
"1996/97" = "1996",
"1997/98" = "1997",
"1998/99" = "1998",
"1999/00" = "1999",
"2000/01" = "2000",
"2001/02" = "2001",
"2002/03" = "2002",
"2003/04" = "2003",
"2004/05" = "2004",
"2005/06" = "2005",
"2006/07" = "2006",
"2007/08" = "2007",
"2008/09" = "2008",
"2009/10" = "2009",
"2010/11" = "2010",
"2011/12" = "2011",
"2012/13" = "2012",
"2013/14" = "2013",
"2014/15" = "2014",
"2015/16" = "2015",
"2016/17" = "2016",
"2017/18" = "2017",
"2018/19" = "2018",
"2019/20" = "2019")
#Pengubahan tipe data
coffee_consumption %>%
mutate_at(.vars = vars("Country", "Coffee type", "year"),
as.factor)Sekarang data ‘coffee_consumption’ sudah memiliki bentuk dan tipe data yang tepat. Sekarang kita akan melakukan perbaikan yang sama terhadap kedua file lainnya.
Data kedua yang akan diperbaiki adalah data ‘coffee_export’, yang memiliki kekurangan-kekurangan yang serupa dengan data ‘coffee_consumption’ sebelumnya: Bentuk tabel data yang menyamping tipe-tipe data yang salah, dan juga kolom yang belum diperlukan.
# Perbaikan pada data ekspor kopi
coffee_export<-coffee_export %>%
mutate(Total_export=NULL) %>%
pivot_longer(!Country, names_to = "Year", values_to = "Exported") %>%
mutate_at(.vars = vars("Country","Year"),
as.factor)
head(coffee_export) # untuk melihat sekilas seperti apa bentuk data yang diperbaikiData yang terakhir perlu diperbaiki adalah data ‘coffee_prod’, yang akan diperbaiki dengan proses yang mirip dengan perbaikkan data sebelumnya.
#Penghapusan kolom yang tidak diperlukan dan pengubahan bentuk tabel
coffee_prod<- coffee_prod %>%
mutate(Total_production=NULL) %>% #Menghilangkan kolom Total Production
pivot_longer(!c("Country","Coffee type"), names_to = "Year", values_to = "Production")
#Pengubahan
coffee_prod$Year<- sapply(X = as.character(coffee_prod$Year),
FUN = switch,
"1990/91" = "1990",
"1991/92" = "1991",
"1992/93" = "1992",
"1993/94" = "1993",
"1994/95" = "1994",
"1995/96" = "1995",
"1996/97" = "1996",
"1997/98" = "1997",
"1998/99" = "1998",
"1999/00" = "1999",
"2000/01" = "2000",
"2001/02" = "2001",
"2002/03" = "2002",
"2003/04" = "2003",
"2004/05" = "2004",
"2005/06" = "2005",
"2006/07" = "2006",
"2007/08" = "2007",
"2008/09" = "2008",
"2009/10" = "2009",
"2010/11" = "2010",
"2011/12" = "2011",
"2012/13" = "2012",
"2013/14" = "2013",
"2014/15" = "2014",
"2015/16" = "2015",
"2016/17" = "2016",
"2017/18" = "2017",
"2018/19" = "2018",
"2019/20" = "2019")
coffee_prod %>%
mutate_at(.vars = vars("Country","Coffee type", "Year"),
as.factor)Dengan ini, semua perbaikkan yang perlu dilakukan sekarang sudah selesai.
Dengan selesainya langkah perbaikkan data, yang perlu dilakukan selanjutnya adalah untuk mepersiapkan data yang saat ini kita miliki untuk hanya memiliki data yang kita ingin tampilkan pada visualisasi kita. Seperti proses perbaikkan data tadi, penulis akan mulai dari menyiapkan data ‘coffee_consumption’ terlebih dahulu agar hanya menampilkan data konsumsi kopi di Indonesia saja karena ingin menunjukkan tren konsumsi kopi di Indonesia.
#Coffee Consumption
cc_indonesia<- coffee_consumption %>%
filter(Country %in% "Indonesia") %>% #Filter disini digunakan untuk hanya menyaring data dari negara Indonesia
mutate(year=as.numeric(year)) %>% #Digunakan untuk menjadikan tahun menjadi bentuk angka
group_by(year) %>%
select(year,consumed)
cc_indonesiaSelanjutnya adalah untuk mempersiapkan data negara-negara pengekspor kopi. Persiapan data dilakukan agar pada visualisasi nanti dapat menampilkan urutan negara berdasarkan jumlah kopi yang diekspor oleh setiap negara tersebut. Agar hasil visualisasi data tidak terlihat berantakan atau terlalu banyak untuk disajikan, penulis memilih untuk hanya menampilkan 10 negara pengekspor kopi paling besar. Data berikut juga sudah diurutkan agar pembaca juga mendapatkan gambaran mengenai negara apa saja yang masuk dalam daftar pengekspor terbesar.
#Coffee export
top_10_exp<- coffee_export %>%
group_by(Country) %>%
summarise(total_export = sum(Exported)) %>% #Untuk menjumlahkan ekspor yang telah dilakukan oleh setiap negara
arrange(-total_export) %>% #Agar data terurut
mutate(Country=str_replace(Country, "Viet Nam", "Vietnam"))%>% #Vietnam tertulis sebagai Viet Nam. Sebenarnya ini tidak salah dalam konteks sejarah, namun di zaman sekarang Vietnam ditulis sebagai satu kata.
slice(1:10) #Agar data hanya menampilkan 10 negara produsen tertinggi
top_10_expTerakhir adalah data untuk merapikan data coffee_prod. Untuk data ini, penulis ingin melihat produksi jenis biji kopi mana yang paling banyak. Sebagai informasi tambahan, jenis biji kopi dapat dibagi menjadi 2 jenis, yaitu biji “Arabica” dan “Robusta”. Perbedaannya terdapat dalam rasa, yang dimana jenis Arabica cenderung memiliki rasa yang lebih halus dan variatif dibandingkan Robusta, yang cenderung memiliki rasa yang sangat tajam dan pahit. Oleh karena sifat kedua biji itulah jenis biji kopi Arabica biasanya dijual dengan harga yang jauh lebih tinggi dibandingkan Robusta, walaupun asalnya (Aceh Gayo, Papua Wamena, Bali Kintamani, dll) bisa saja sama.
#coffee_prod
prod_style<- coffee_prod %>%
group_by(`Coffee type`) %>%
rename(cof_type = `Coffee type`) %>%
summarise(Total_Prod=sum(Production)) %>%
arrange(-Total_Prod) %>%
mutate(prop=round((Total_Prod/sum(Total_Prod)*100),2)) %>% #Kedua langkah mutate ini diperlukan untuk bentuk plot yang akan digunakan pada laporan ini
mutate(pos=cumsum(prop)-0.5*prop)
prod_styleDengan ini, langkah persiapan data sebelum visualisasi telah selesai
Dengan selesainya segala perbaikkan dan persiapan yang perlu dilakukan untuk data yang akan divisualisasikan, maka langkah terakhir yang perlu dilakukan hanyalah proses visualisasinya sendiri.
Line plot akan digunakan untuk memperlihatkan pertumbuhan konsumsi kopi di Indonesia.
plot_cc <- cc_indonesia %>%
ggplot(aes(x = year,
y = consumed)) +
geom_line(color="#5a2815", size=0.5)+
geom_point(color="#C68E17", size= 3)+
scale_y_continuous(label = scales::label_number(suffix = " Kg"))+ #Sebenarnya saya juga ingin meletakkan limit untuk sumbu Y (300,000,000), namun ketika saya coba run R saya memakan memory yang sangat besar (di memory usage bisa sampai 3.5GiB). Mohon maaf atas ketidaknyamanannya
scale_x_discrete(limits = 1990:2019)+
labs(title = "Tren Konsumsi Kopi di Indonesia",
subtitle = "Berdasarkan Data Tahun 1990-2019",
x = "Tahun",
y = "Jumlah Konsumsi (Kg)")+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, colour = "white"),
axis.text.y = element_text(color = "white"),
axis.title.x = element_text(color = "white"),
axis.title.y = element_text(color = "white"),
plot.title = element_text(hjust = 0.5, color = "white"),
plot.subtitle = element_text(hjust = 0.5, color = "white"),
plot.background = element_rect(fill = "#290c0c"),
panel.background = element_rect(fill= "#ead8be",
color = "#ead8be"))## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## Warning: Continuous limits supplied to discrete scale.
## ℹ Did you mean `limits = factor(...)` or `scale_*_continuous()`?
plot_ccSeperti yang bisa dilihat di plot diatas, tren konsumsi kopi di Indonesia bisa pertama kali mengalami kenaikkan drastis dari tahun 2005 hingga 2007. Kenaikkan tersebut kemudian terhenti dan menjadi stabil pada tingkat 200,000,000 Kg dari tahun 2007 sampai 2010. Kenaikkan drastis kemudian berlanjut dari tahun 2010 hingga 2019. Pada 2019, konsumsi kopi di Indonesia sudah mencapai 288,360,000 Kg. Berhentinya perkembangan konsumsi kopi dari tahun 2007 hingga 2010 sepertinya bisa dijelaskan oleh terjadinya krisis moneter yang terjadi pada tahun 2007 dan 2008 yang diakibatkan oleh jatuhnya harga-harga rumah secara drastis. Oh iya, apakah plotnya sudah seperti secangkir cappuccino? hehe.
Visualisasi kedua adalah untuk urutan negara berdasarkan ekspor kopi terbesar, yang akan divisualisasikan dengan bar plot.
plot_top10<- top_10_exp %>%
ggplot(aes(x=total_export,
y=reorder(Country,total_export)))+
geom_col(fill = "#5a2815")+
geom_col(data = top_10_exp %>% filter(Country == "Indonesia"), fill="#C68E17")+
scale_x_continuous(label = scales::label_number(suffix = " Kg"))+
geom_vline(aes(xintercept=mean(total_export, data = top_10_exp)), color = "#C68E17", lty = 2, lwd =1)+
labs(title = "10 Negara Pengekspor Kopi Terbesar",
subtitle = "Berdasarkan Data Tahun 1990-2019",
x= "Total Ekspor (Kg)",
y= " ")+
theme(axis.text.x = element_text(colour = "white"),
axis.text.y = element_text(color = "white"),
axis.title.x = element_text(color = "white"),
axis.title.y = element_text(color = "white"),
plot.title = element_text(hjust = 0.5, color = "white"),
plot.subtitle = element_text(hjust = 0.5, color = "white"),
plot.background = element_rect(fill = "#290c0c"),
panel.background = element_rect(fill= "#ead8be",
color = "#ead8be"))
plot_top10Berdasarkan hasil visualisasi dari data yang kita miliki, bisa dilihat bahwa Indonesia adalah negara pengekspor kopi ke-4 terbesar di dunia. Kita juga bisa melihat bahwa terdapat perbedaan jauh antara jumlah expor kopi di Indonesia dengan jumlah ekspor kopi Colombia sebagai pengekspor kopi ke-3 terbesar di dunia. Selain itu, jumlah ekspor untuk 7 negara termasuk Indonesia ternyata dibawah rata-rata. Rata-rata yang tinggi ini kemungkinan besar diakibatkan oleh tingkat ekspor yang sangat tinggi oleh ketiga negara terbesar pada daftar ini, yaitu Brazil, Vietnam, dan Colombia.
Visualisasi mengenai gaya produksi akan direpresentasikan dengan treemap untuk melihat proporsi gaya produksi kopi dari negara-negara produsen kopi.
plot_prop <- prod_style %>%
ggplot(aes(fill = cof_type, #Bagian data kategorikalnya
area = prop, #Bagian data numeriknya
label = glue("{cof_type}:
{prop} %")))+ #Untuk memberikan informasi mengenai data yang direpresentasikan oleh setiap petak
geom_treemap()+ #membutuhkan package treemapify untuk membuat treemap dari ggplot
geom_treemap_text(colour = "white", place = "center")+ #Untuk membuat tulisan yang tampil di petak berada di tengah-tengah petak
scale_fill_manual(values = c("#2b1e15","#ac7b58", "#4c3525", "#6d4c36"))+
labs(title = "Proporsi Gaya Produksi Biji Kopi")+
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5, color = "white"),
plot.background = element_rect(fill = "#290c0c"))
plot_propSeperti yang bisa dilihat dari hasil visualisasi di atas, cara produksi yang paling sering ditemukan di negara-negara produsen kopi adalah:
Setelah melakukan eksplorasi data mengenai kopi, penulis mendapatkan insight yang penulis rasa cukup menarik. Mulai dari tingginya tren konsumsi kopi selama berjalannya waktu, seberapa besar jumlah ekspor yang dilakukan oleh negara-negara pengekspor kopi, hingga jenis produksi biji kopi seperti apa yang paling sering dilakukan oleh negara-negara produsen kopi. Sebagai seseorang yang memiliki hobi kopi, fakta mengenai kopi dari bidang statistik cukup menarik.
Kedepannya, penulis sangat menyarankan orang-orang yang tertarik terhadap analisa tentang kopi ini untuk mencari data yang lebih up to date. Seperti yang sebelumnya telah tertulis, data yang digunakan penulis saat ini hanya mencakup informasi hingga tahun 2019, sehingga kemungkinan besar data yang digunakan oleh penulis sudah sangat outdated bila dibandingkan dengan fakta lapangan saat ini.
Penulis juga ingin meminta maaf bila terdapat salah kata, dan berharap laporan dalam bentuk visualisasi data ini setidaknya dapat menghibur para pembaca.
Terima kasih.