Email: vanessasupit0910@gmail.com
RPubs: https://rpubs.com/datazerotohero/
Github: https://github.com/datazerotohero/
Data visualization adalah teknik mendapatkan informasi dari data ke konteks visual, seperti bagan, grafik, dan peta. Data Visualisasi memungkinkan untuk mengatasi data yang kecil bahkan data besar menjadi lebih mudah untuk otak manusia dimengerti, dan visualisasi juga membuatnya lebih baik untuk mendeteksi pola, trend, dan pencilan dalam kelompok data.
R adalah platform yang bagus untuk analisis data, bisa untuk membuat hampir semua macam tipe grafik. Buku ini dapat membantumu untuk membuat visualisasi paling populer - dari cepat dan plot kasar untuk publikasi - grafik yang siap. disini kita akan belajar bagaimana untuk memvisualisasi data dari univariate, bivariate dan multivariate. Dari yang paling dasar ke menengah, silahkan ikuti instruksi dibawah ini langkah demi langkah.
Plot Univariate biasanya digunakan untuk menjalanlan distribusi data dari satu variabel. Variabelnya dapat berupa kategorikal (e.g., Jenis Kelamin, ras, negara, kota, dsb) atau kuantitatif (e.g., umur, berat, inflasi, skala, dsb).
Distribusi data dari satu variabel plotnya bersifat bar-chart, pie-chart, atau (jarang) treemap.
Berikut adalah contoh Marriage
dataset, I collect from package mosaicData
.Kita gunakan grafik batang untuk menampilkan distribusi pendatang pernikahan berdasarkan Zodiac
library(ggplot2) # untuk visualisasi
setwd("C:/Users/USER/Documents/SEMESTER 3/ALGORITMA/WEEK 13 VISUALIZATION/") # jangan lupa mengatur direktori kerja
Marriage<- read.csv("Data/Marriage.csv") # muat data dari PC
ggplot(Marriage, aes(x = zodiacs)) + # Plot distribusi dari `Zodiac`
geom_bar(fill = "burlywood",color= "azure4")+ # kamu bisa memodifikas warnanya
theme_minimal() + # Gunakan teman minimal
labs(x = "Zodiacs", # kamu bisa memodifikasi plot dan labelnya
y = "Frekuensi",
title = "Peserta Pernikahan Berdasarkan Zodiak")
Categorical Bar Chart 1
Batang dapat mewakilkan persen dibanding jumlah. untuk grafik batang (Zodiac), kode aes(x=sign)
merupakan jalan pintas untuk aes(x = sign, y = ..count..)
, dimana ..count.. adalah variabel spesial untuk mewakilkan frekunesi dalam setiap kategroi. kamu bisa mneggunakan ini untuk menghitung persentase, dengan variabel eksplisit y.
Dalam R, warna dapat ditentukan bersadarkan nama (e.g col = “red”
) seperti yang dapat kamu lihat digambar berikut.
atau bisa juga dengan menetapkan warna dengan menggunakan triplet RGB heksadesimal (sepert col = “#FFCC00”
) lebih. Bahkan, kamu juga dapat menggunakan warna lain dari sistem seperti yang diambil dari salah satu pada paket RColorBrewer
Lebih dan paketnya grDevices
(kamu mungkin sudah memuatnya) berisi sejumlah palet, ketik ? rainbow
di Rconsole kamu. Mari pertimbangkan grafik berikut:
library(ggplot2) # Visualisasi
ggplot(Marriage,
aes(x = zodiacs,
y = ..count.. / sum(..count..))) +
geom_bar(fill = rainbow(12), color= "azure4") +
theme_minimal() + # gunakan tema minimal
labs(x = "Zodiak",
y = "Persen",
title = "Peserta Pernikahan dalam Persen") +
scale_y_continuous(labels = scales::percent) # tambahkan simnol % pada garis y
Categorical Bar Chart 2
Mengurutkan batang menurut frekuensi sering kali dapat membantu. Pada kode di bawah ini, frekuensi dihitung secara eksplisit. Kemudian fungsi reorder
digunakan untuk mengurutkan kategori berdasarkan frekuensi. Opsi stat ="identity"
memberi tahu fungsi plotting untuk tidak menghitung jumlah, karena mereka diberikan secara langsung.
library(dplyr) # manipulasi data
library(ggplot2) # visualisasi
plotdata <- Marriage %>% # memuat dataset
count(zodiacs) # menghitung pastisipan setiap zodiac
# plot menurun
ggplot(plotdata,
aes(x = reorder(zodiacs, n),
y = n)) +
geom_bar(stat = "identity",
fill = rainbow(12),
color= "azure4") +
theme_minimal() + # gunakan tema minimal
labs(x = "Zodiak",
y = "Frekuensi",
title = "Menyortir Kategori")
Categorical Bar Chart 3
Jika ingin memberi label pada setiap batang dengan nilai numeriknya, periksa kode berikut:
library(dplyr) # Manipulasi data
library(ggplot2) # visualisasi
library(scales) # otomatis menentukan break/labels
plotdata <- Marriage %>%
count(zodiacs) %>%
mutate(pct = n / sum(n),
pctlabel = paste0(round(pct*100), "%"))
# plot batang sebagai persen dalam menurun dnegan label batang
ggplot(plotdata,
aes(x = reorder(zodiacs, -pct),
y = pct)) +
geom_bar(stat = "identity",
fill = rainbow(12),
color = "azure4") +
geom_text(aes(label = pctlabel),
vjust = -0.25) +
theme_minimal() + # gunakan tema minimal
scale_y_continuous(labels = percent) +
labs(x = "Zodiak",
y = "Persen",
title = "Batang Pelabelan")
Categorical Bar Chart 4
Terkadang label kategori mungkin tumpang tindih, itu sangat mengganggu bukan ?. Jadi, kamu dapat memutar label sumbu.
library(ggplot2) # Visualisasi
library(scales) # otomatis menentukan break/labels
# plot batang dengan persen
# menurun dengan label batang
ggplot(plotdata,
aes(x = reorder(zodiacs, -pct),
y = pct)) +
geom_bar(stat = "identity",
fill = rainbow(12),
color = "azure4") +
geom_text(aes(label = pctlabel),
vjust = -0.25) +
scale_y_continuous(labels = percent) +
theme_minimal() + #gunakan tema minimal
labs(x = "Zodiak",
y = "Persen",
title = "Label yang Tumpang Tindih")+
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Categorical Bar Chart 5
atau, dapat juga menangani situasi ini dengan membalikkan sumbu x
dan y
.
library(ggplot2) # visualisasi
library(scales) # otomotatis menentukan break/label
# plot batang dengan persen
# menurun dengan label batang
ggplot(plotdata,
aes(x = reorder(zodiacs, -pct),
y = pct)) +
geom_bar(stat = "identity",
fill = rainbow(12),
color = "azure4") +
geom_text(aes(label = pctlabel),
hjust = -0.10) +
scale_y_continuous(labels = percent) +
theme_minimal() + # gunakan tema minimal
labs(x = "Zodiacs",
y = "Percent",
title = "Overlapping Labels")+
coord_flip()
Categorical Bar Chart 6
Diagram lingkaran kontroversial dalam statistik. Jika tujuanmu adalah membandingkan frekuensi kategori, lebih baik Anda menggunakan diagram batang (manusia lebih baik dalam menilai panjang batang daripada volume irisan pai). Jika tujuanmu adalah membandingkan setiap kategori dengan keseluruhan (misalnya, berapa bagian peserta yang merupakan Hispanik dibandingkan dengan semua peserta), dan jumlah kategorinya kecil, maka diagram lingkaran mungkin cocok untukmu. Dibutuhkan lebih banyak kode untuk membuat diagram lingkaran yang menarik di R.
Ini adalah contoh untuk membuat diagram lingkaran ggplot2 dasar:
library(dplyr) # Manipulasi data
library(ggplot2) # visualisasi
library(scales) # otomatis menentukan break/labels
# persiapan data
plotdata <- Marriage %>%
count(race) %>%
arrange(desc(race)) %>%
mutate(prop = round(n*100/sum(n), 1),
lab.ypos = cumsum(prop) - 0.5*prop)
# membuat grafik pai
mycols <- c("#0073C2FF", "#EFC000FF", "#868686FF", "#CD534CFF")
ggplot(plotdata, aes(x = "", y = prop, fill = race)) +
geom_bar(width = 1, stat = "identity", color = "white") +
coord_polar("y", start = 0)+
geom_text(aes(y = lab.ypos, label = prop), color = "white")+
scale_fill_manual(values = mycols) +
theme_void()+
labs(title = "Marriage Participants by Race")
Categorical Pie Chart
Grafik donat hanyalah grafik pai sederhana dengan lubang di dalamnya. Satu-satunya perbedaan antara kode diagram lingkaran adalah kita menetapkan: x=2
danxlim=c(0,5, 2.5)
untuk membuat lubang di dalam diagram lingkaran. Selain itu, argumen lebar
dalam fungsigeom_bar()
tidak lagi diperlukan.
library(ggplot2) # visualisasi
library(scales) # otomatis menentukan break/labels
# membuat grafik donat
ggplot(plotdata, aes(x = 2, y = prop, fill = race)) +
geom_bar(stat = "identity", color = "white") +
coord_polar(theta = "y", start = 0)+
geom_text(aes(y = lab.ypos, label = prop), color = "white")+
scale_fill_manual(values = mycols) +
theme_void()+
xlim(0.5, 2.5)+
labs(title = "Marriage Participants by Race")
Categorical Donut Chart 1
Sekarang mari kita menjadi berangan-angan dan menambahkan label, sambil menghilangkan legenda
library(ggplot2) # visualisasi
library(scales) # otomatis menentukan break/labels breaks/labels
# tambahkan label %
plotdata$percent <- paste0(plotdata$race, "\n",
round(plotdata$prop), "%")
# Grafik donat dengan %
ggplot(plotdata, aes(x = 2, y = prop, fill = race)) +
geom_bar(stat = "identity", color = "white") +
coord_polar(theta = "y", start = 0)+
geom_text(aes(y = lab.ypos, label = percent), color = "white")+
scale_fill_manual(values = mycols) +
theme_void()+
xlim(0.5, 2.5)+
labs(title = "Peserta pernikahan menurut ras")
Categorical Donut Chart 2
Alternatif untuk diagram lingkaran adalah peta hierarki. Tidak seperti diagram lingkaran, diagram ini dapat menangani variabel kategori yang memiliki banyak tingkatan.
library(ggplot2) # visualisasi
library(treemapify) # visualisasi
library(scales) # otomatis menentukan break/labels
plotdata <- Marriage %>%
count(officialTitle)
ggplot(plotdata,
aes(fill = officialTitle,
area = n)) +
geom_treemap() +
labs(title = "Partisipan Pernikahan oleh Pejabat")
Categorical Tree Map 1
berikut adalah versi yang lbih berguna dengan label
ggplot(plotdata,
aes(fill = officialTitle,
area = n,
label = officialTitle)) +
geom_treemap() +
geom_treemap_text(colour = "white",
place = "centre") +
labs(title = "Partisipan Pernikahan oleh Pejabat") +
theme(legend.position = "none")
Categorical Tree Map 2
Distribusi variabel kuantitatif tunggal biasanya diplot dengan histogram, kernel density plot, or plot titik
menggunakan data marriage, mari plot umur dari partisipan wedding
library(ggplot2) # visualisasi
ggplot(Marriage, aes(x = age)) +
geom_histogram(fill = "salmon1",
color = "white",bins = 20) +
theme_minimal() + # gunakan tema minimal
labs(title="Peserta Pernikahan berdasarkan usia (Dasar)",
x = "usia")
Quantitative Histogram
Sebagian besar peserta tampaknya berusia awal 20-an dengan kelompok lain berusia 40-an, dan kelompok yang jauh lebih kecil berusia enam puluhan dan awal tujuh puluhan. Ini akan menjadi distribusi multimoda. Warna histogram dapat dimodifikasi menggunakan dua opsi: * fill - mengisi warna pada batang * color - warna pembatas di sekeliling batang
Atau kamu dapat menentukannya dengan binwidth
, lebar tempat sampah yang diwakili oleh jeruji.
library(ggplot2) # visualisasi
library(scales) # otomatis menentukan break/labels
ggplot(Marriage,
aes(x = age,
y= ..count.. / sum(..count..))) +
geom_histogram(fill = "salmon1",
color = "white",
binwidth = 5) +
theme_minimal() + # Gunakan tema minimal
labs(title="Peserta Pernikahan berdasarkan usia (Tempat Sampah dan Bandwidth Alternatif)",
y = "persen",
x = "usia") +
scale_y_continuous(labels = percent)
Quantitative Histogram 2
Seperti grafik batang, sumbu y dapat mewakili hitungan atau persen dari total.
library(ggplot2) # visualisasi
library(scales) # otomatis menentukan break/labels
ggplot(Marriage,
aes(x = age,
y= ..count.. / sum(..count..))) +
geom_histogram(fill = "salmon1",
color = "white",
binwidth = 5) +
theme_minimal() + # gunakan tema minimal
labs(title="Peserta Pernikahan berdasarkan usia (Persen) ",
y = "Persen",
x = "Umur") +
scale_y_continuous(labels = percent)
Quantitative Histogram 3
Alternatif untuk histogram adalah plot kepadatan kernel. Secara teknis, estimasi kepadatan kernel adalah metode non-parametrik untuk memperkirakan fungsi kepadatan probabilitas dari variabel acak kontinu. (Apa ??) Pada dasarnya, kami mencoba menggambar histogram yang dihaluskan, di mana area di bawah kurva sama dengan satu.
library(ggplot2) # visualisasi
ggplot(Marriage, aes(x = age)) +
geom_density(fill = "indianred3") +
theme_minimal() + # gunakan tema minimal
labs(title = "Peserta Pernikahan Berdasarkan Umur")
Quantitative Kenel Density Plot
Grafik menunjukkan distribusi skor. Misalnya, proporsi kasus antara 20 dan 40 tahun akan diwakili oleh area di bawah kurva antara 20 dan 40 pada sumbu x. Seperti bagan sebelumnya, kita juga dapat menggunakan isian dan warna untuk menentukan warna isian dan batas.
Tingkat kehalusan dikontrol oleh parameter bandwidth bw
. Untuk menemukan nilai default untuk variabel tertentu, gunakan fungsi bw.nrd0
. Nilai yang lebih besar akan menghasilkan pemulusan yang lebih banyak, sedangkan nilai yang lebih kecil akan menghasilkan pemulusan yang lebih sedikit.
## [1] 5.181946
ggplot(Marriage, aes(x = age)) +
geom_density(fill = "deepskyblue",
bw = 1) +
theme_minimal() + # gunakan tema minimal
labs(title = "Peserta berdasarkan usia",
subtitle = "bandwidth = 1")
Smoothing Parameter Plot
Plot kepadatan kernel memungkinkan Anda dengan mudah melihat skor mana yang paling sering dan mana yang relatif jarang. Namun sulit untuk menjelaskan arti sumbu y kepada seorang non-ahli statistik. (Tapi itu akan membuatmu terlihat sangat pintar di pesta!)
Alternatif lain untuk histogram adalah grafik titik. Sekali lagi, variabel kuantitatif dibagi menjadi beberapa kelompok, tetapi bukannya batang ringkasan, setiap pengamatan diwakili oleh sebuah titik. Secara default, lebar sebuah titik sama dengan lebar bin, dan titik-titik bertumpuk, dengan setiap titik mewakili satu observasi. Ini bekerja paling baik jika jumlah observasi kecil (katakanlah, kurang dari 150). Opsi isian dan warna dapat digunakan untuk menentukan warna isian dan batas masing-masing titik
library(ggplot2) # visualisasi
ggplot(Marriage, aes(x = age)) +
geom_dotplot(fill = "gold",
color = "azure4",
binwidth = 2) +
theme_minimal() + # tema minimal
labs(title = "Peserta berdasarkan usia",
y = "Proportion",
x = "Age")
Dot Chart
ada banyak pilihan yang tersedia. klik here untuk lebih detail.
Grafik bivariat menampilkan hubungan antara dua variabel. Jenis grafik akan tergantung pada tingkat pengukuran variabel (kategorikal atau kuantitatif)
Mari kita plot hubungan antara kelas mobil dan jenis penggerak (roda depan, roda belakang, atau penggerak 4 roda) untuk mobil di Fuel economy dataset.
library(ggplot2) # visualisasi
mpg$drv<-factor(mpg$drv,
levels = c("f", "r", "4"),
labels = c("front-wheel", "rear-wheel", "4-wheel"))
# stacked bar chart
ggplot(mpg,
aes(x = class,
fill = drv)) +
geom_bar(position = "fill") +
theme_minimal() + #tema minimal
labs(y = "Proportion")
Stacked Bar Chart
Bagan batang yang dikelompokkan menempatkan batang untuk variabel kategori kedua secara berdampingan. Untuk membuat plot batang yang dikelompokkan, gunakan opsi position =" single "
. Perhatikan bahwa opsi ini hanya tersedia di versi pengembangan terbaru ggplot2, tetapi akan segera tersedia secara umum.
library(ggplot2) # visualisasi
ggplot(mpg, aes(x = class, fill = drv)) +
theme_minimal() + # tema minimal
geom_bar(position = position_dodge(preserve = "single"))
Grouped Bar Chart
Plot batang tersegmentasi adalah plot batang bertumpuk di mana setiap batang mewakili 100 persen. kamu dapat membuat diagram batang tersegmentasi menggunakan opsi posisi = “terisi”. Jenis plot ini sangat berguna jika tujuannya adalah untuk membandingkan persentase kategori dalam satu variabel di setiap tingkat variabel lain. Misalnya, proporsi mobil penggerak roda depan meningkat saat kamu beralih dari kompak, ke menengah, ke minivan.
library(dplyr) # Manipulasi data
library(ggplot2) # visualisasi
library(scales) # otomatis menentukan break/labels
# buat summary data (Data manipulasi)
plotdata <- mpg %>%
group_by(class, drv) %>%
dplyr::summarize(n = n()) %>%
mutate(pct = n/sum(n),
lbl = scales::percent(pct))
# buat grafik batang bertumpuk
# tambahkan label disetiap bagian
ggplot(plotdata,
aes(x = factor(class),
y = pct,
fill = factor(drv))) +
geom_bar(stat = "identity",
position = "fill") +
scale_y_continuous(breaks = seq(0, 1, .2),
label = percent)+
geom_text(aes(label = lbl),
size = 3,
position = position_stack(vjust = 0.5)) +
scale_fill_brewer(palette = "Set2") +
theme_minimal() + # gunakan tema minimal
labs(y = "Persen",
fill = "Drive Train",
x = "Kelas",
title = "Penggerak Mobil menurut Kelas") +
theme_minimal()
Segmented Bar Chart
Catatan: Kamu dapat menggunakan opsi tambahan untuk meningkatkan warna dan pelabelan. Pada grafik di bawah ini
factor
mengubah urutan kategori untuk variabel kelas dan urutan serta * label
untuk variabel drivescale_y_continuous
mengubah label tanda centang sumbu ylabs
menyediakan judul dan mengubah label untuk sumbu x dan y serta legendascale_fill_brewer
mengubah skema warna isiantheme_minimal
menghapus latar belakang abu-abu dan mengubah warna kisiFungsi lainnya dibahas lebih lengkap pada bagian pada Bab Visualisasi Data Lanjutan.
Bagan mosaik dapat menampilkan hubungan antara variabel kategori menggunakan persegi panjang yang luasnya mewakili proporsi kasus untuk kombinasi level tertentu. Warna ubin juga dapat menunjukkan hubungan derajat antar variabel.
Meskipun bagan mosaik dapat dibuat dengan ggplot2 menggunakan ggmosaic
paket, saya sarankan menggunakan paket vcd sebagai gantinya. Meskipun tidak akan membuat grafik ggplot2, paket memberikan pendekatan yang lebih komprehensif untuk memvisualisasikan data kategorikal.
Orang-orang terpesona dengan Titanic (atau apakah dengan Leo?). Dalam bencana Titanic , peran apa yang dimainkan seks dan kelas dalam bertahan hidup? Kita dapat memvisualisasikan hubungan antara ketiga variabel kategori ini dengan menggunakan kode di bawah ini.
## Sex Male Female
## Survived Class
## No 1st 118 4
## 2nd 154 13
## 3rd 422 106
## Crew 670 3
## Yes 1st 62 141
## 2nd 25 93
## 3rd 88 90
## Crew 192 20
## Loading required package: grid
Basic mosaic plot
Ukuran ubin sebanding dengan persentase kasus dalam kombinasi tingkat tersebut. Jelas lebih banyak penumpang yang tewas daripada yang selamat. Mereka yang tewas terutama adalah penumpang pria kelas 3 dan awak pria (kelompok terbesar).
Jika kita mengasumsikan bahwa ketiga variabel ini tidak bergantung, kita dapat memeriksa residual dari model dan memberi bayangan pada ubin agar sesuai. Pada grafik di bawah ini, biru tua menunjukkan lebih banyak kasus daripada yang diharapkan jika diberikan kebebasan. Merah tua mewakili lebih sedikit kasus dari yang diharapkan jika kemerdekaan berlaku.
mosaic(tbl,
shade = TRUE,
legend = TRUE,
labeling_args = list(set_varnames = c(Sex = "Gender",
Survived = "Survived",
Class = "Passenger Class")),
set_labels = list(Survived = c("No", "Yes"),
Class = c("1st", "2nd", "3rd", "Crew"),
Sex = c("F", "M")),
main = "Titanic data")
Mosaic plot with shading
Kita dapat melihat bahwa jika kelas, jenis kelamin, dan kelangsungan hidup independen, kita melihat lebih banyak awak laki-laki yang tewas, dan perempuan kelas 1, 2 dan 3 selamat daripada yang diharapkan. Sebaliknya, jauh lebih sedikit penumpang kelas satu (pria dan wanita) yang meninggal daripada yang diperkirakan secara kebetulan. Dengan demikian asumsi kemerdekaan ditolak. (Peringatan spoiler: Leo tidak berhasil.)
Hubungan antara dua variabel kuantitatif biasanya ditampilkan menggunakan diagram sebar dan grafik garis.
Scatterplot dibuat untuk mempelajari hubungan antara 2 variabel. Sehingga seringkali disertai dengan perhitungan koefisien korelasi, yang biasanya mencoba mengukur hubungan linier. Namun jenis hubungan lain dapat dideteksi menggunakan sebar, dan tugas umum terdiri untuk menyesuaikan model yang menjelaskan Y dalam fungsi X. Berikut adalah beberapa pola yang dapat Anda deteksi dengan melakukan sebar
library(ggplot2) # visualisasi
library(hrbrthemes) # untuk `theme_ipsum()` and legenda
# buat Data
d1 <- data.frame(x=seq(1,100),
y=rnorm(100),
name="No trend")
d2 <- d1 %>%
mutate(y=x*10 + rnorm(100,sd=60)) %>%
mutate(name="Linear relationship")
d3 <- d1 %>%
mutate(y=x^2 + rnorm(100,sd=140)) %>%
mutate(name="Square")
d4 <- data.frame( x=seq(1,10,0.1),
y=sin(seq(1,10,0.1)) +
rnorm(91,sd=0.6)) %>%
mutate(name="Sin")
don <- do.call(rbind, list(d1, d2, d3, d4))
# Plot
don %>%
ggplot(aes(x=x, y=y)) +
geom_point(color="#69b3a2", alpha=0.8) +
theme_ipsum() +
facet_wrap(~name, scale="free")
relationship scatterplots
Tampilan paling sederhana dari dua variabel kuantitatif adalah sebar, dengan setiap variabel diwakili pada sumbu. Misalnya, dengan menggunakan kumpulan data Gaji, kita dapat memplot pengalaman (yrs.since.phd) vs. gaji akademik (gaji) untuk college Professors.
library(ggplot2) # visualisasi
library(scales) # otomatis menentukan break/label
data(Salaries, package="carData")
# meningkatkan scatter plot
ggplot(Salaries,
aes(x = yrs.since.phd,
y = salary)) +
geom_point(color="cornflowerblue",
size = 2,
alpha=.8) +
scale_y_continuous(label = scales::dollar,
limits = c(50000, 250000)) +
scale_x_continuous(breaks = seq(0, 60, 10),
limits=c(0, 60)) +
theme_minimal() + # gunakan tema minimal
labs(x = "Tahun Sejak PhD",
y = "",
title = "Pengalaman vs. Gaji",
subtitle = "Gaji 9 bulan untuk 2008-2009")
Scatterplot 1
Notes: geom_point
dapat digunakan untuk mengubah
color
- warna titiksize
- ukuran titikshape
- bentuk titikalpha
- transparansi titik. Transparansi berkisar dari 0 (transparan) hingga 1 (buram), dan merupakan parameter yang berguna saat titik tumpang tindihFungsi scale_x_continuous
danscale_y_continuous
mengontrol penskalaan masing-masing pada sumbu x dan y. Kita dapat menggunakan opsi dan fungsi ini untuk membuat plot sebar yang lebih menarik.
Seringkali berguna untuk meringkas hubungan yang ditampilkan di sebar, menggunakan garis yang paling pas. Banyak jenis garis yang didukung, termasuk linier, polinomial, dan nonparametrik (loess). Secara default, batas kepercayaan 95% untuk garis-garis ini ditampilkan.
library(ggplot2) # Visualisasi
ggplot(Salaries,
aes(x = yrs.since.phd,
y = salary)) +
geom_point(color= "cornflowerblue") +
geom_smooth(method = "lm", color = "brown1")+
theme_minimal() + # gunakan tema minimal
labs(x = "Tahun Sejak PhD",
y = "",
title = "Pengalaman vs. Gaji",
subtitle = "Gaji 9 bulan untuk 2008-2009")
Scatterplot Linear
Jelas, gaji meningkat dengan pengalaman. Namun, tampaknya ada penurunan di ujung kanan - profesor dengan pengalaman signifikan, mendapatkan gaji lebih rendah. Garis lurus tidak menangkap efek non-linier ini. Garis dengan lengkungan akan lebih pas di sini.
Garis regresi polinomial memberikan garis fit dari formulir
\[\begin{equation} \label{eq:1} \hat{y}=\beta_0+\beta_1x+\beta_2x^2+\cdots+\beta_nx^2 \end{equation}\]
Biasanya garis kuadrat (satu tikungan), atau kubik (dua tikungan) digunakan. Sangat jarang perlu menggunakan urutan yang lebih tinggi $ (> 3) $ polynomials. Menerapkan kesesuaian kuadrat ke set data gaji menghasilkan hasil sebagai berikut.
library(ggplot2) # visualisasi
ggplot(Salaries,
aes(x = yrs.since.phd,
y = salary)) +
geom_point(color= "cornflowerblue") +
geom_smooth(method = "lm",
formula = y ~ poly(x, 2),
color = "yellow")+
theme_minimal() + #tema minimal
labs(x = "Tahun Sejak PhD",
y = "",
title = "Pengalaman vs. Gaji",
subtitle = "Gaji 9 bulan untuk 2008-2009")
Scatterplot Quadratic
Akhirnya, garis kesesuaian nonparametrik yang diperhalus sering kali dapat memberikan gambaran yang baik tentang hubungan tersebut. Default di ggplot2 adalah garis loess yang merupakan singkatan dari penghalusan sebar berbobot lokal.
library(ggplot2) # visualisasi
ggplot(Salaries,
aes(x = yrs.since.phd,
y = salary)) +
geom_point(color="cornflowerblue",
size = 2,
alpha = 1) +
geom_smooth(size = 1,
color = "green") +
scale_y_continuous(label = scales::dollar,
limits = c(50000, 250000)) +
scale_x_continuous(breaks = seq(0, 60, 10),
limits = c(0, 60)) +
theme_minimal() + #tema minimal
labs(x = "Tahun Sejak PhD",
y = "",
title = "Pengalaman vs. Gaji",
subtitle = "Gaji 9 bulan untuk 2008-2009") +
theme_minimal()
Scatterplot Smoothed Nonparametric
Saat memplot hubungan antara variabel kategori dan variabel kuantitatif, tersedia banyak jenis grafik. Ini termasuk diagram batang yang menggunakan statistik ringkasan, plot kepadatan kernel yang dikelompokkan, plot kotak berdampingan, plot biola berdampingan, plot mean / sem, plot ridgeline, dan plot Cleveland.
Di bagian sebelumnya, diagram batang digunakan untuk menampilkan jumlah kasus berdasarkan kategori untuk satu variabel atau untuk dua variabel. Anda juga dapat menggunakan diagram batang untuk menampilkan statistik ringkasan lainnya (misalnya, rata-rata atau median) pada variabel kuantitatif untuk setiap tingkat variabel kategori.
Misalnya, grafik berikut menampilkan gaji rata-rata untuk sampel profesor universitas menurut peringkat akademis mereka.
library(dplyr) # Manipulasi data
library(ggplot2) # visualisasi
library(scales) # otomatis menentukan break/labels
data(Salaries, package="carData")
# hitung gaji rataan untuk setiap tingkatan
plotdata <- Salaries %>%
group_by(rank) %>%
dplyr::summarize(mean_salary = mean(salary))
# plot gaji rataan dalam gaya yang lebih menarik
mycols <- c("#CD534CFF", "#EFC000FF", "#0073C2FF")
ggplot(plotdata,
aes(x = factor(rank,
labels = c("Assistant\nProfessor",
"Associate\nProfessor",
"Full\nProfessor")),
y = mean_salary)) +
geom_bar(stat = "identity",
fill = mycols) +
geom_text(aes(label = dollar(mean_salary)),
vjust = -0.25) +
scale_y_continuous(breaks = seq(0, 130000, 20000),
label = dollar) +
theme_minimal() + # gunakan tema minimal
labs(title = "Rataan gaji berdasarkan pangkat",
subtitle = "9 buln akademik gaji untuk 2008-2009",
x = "",
y = "")
Bar Chart (Summary statistics)
Seseorang dapat membandingkan grup pada variabel numerik dengan melapiskan kernel density plot dalam satu grafik. Mari kita plot distribusi gaji dengan peringkat menggunakan plot kepadatan kernel.
ggplot(Salaries,
aes(x = salary,
fill = rank)) +
geom_density(alpha = 0.4) +
theme_minimal() +
labs(title = "Distribusi gaji berdasarkan tingkatan")
Grouped Kernel Density Plots
Pilihan alpha
membuat plot kepadatan transparan sebagian sehingga kita dapat melihat apa yang terjadi di bawah tumpang tindih. Nilai alfa berkisar dari 0 (transparan) hingga 1 (buram). Grafik tersebut menjelaskan bahwa, secara umum, gaji naik sesuai pangkat. Namun, kisaran gaji untuk profesor penuh sangat luas.
box-plot menampilkan $ 25 ^ {th} $ persentil, median, dan $ 75 ^ {th} $ persentil dari sebuah distribusi. Kumis (garis vertikal) menangkap sekitar 99% dari distribusi normal, dan pengamatan di luar rentang ini diplot sebagai titik yang mewakili pencilan (lihat gambar di bawah)
Box Plots
Plot kotak berdampingan sangat berguna untuk membandingkan kelompok (yaitu, level variabel kategori) pada variabel numerik. Mari kita plot distribusi gaji dengan peringkat menggunakan plot kotak. Plot kotak bertakik memberikan metode perkiraan untuk memvisualisasikan apakah kelompok berbeda. Meskipun bukan tes formal, jika takik dari dua petak kotak tidak tumpang tindih, ada bukti kuat (kepercayaan 95%) bahwa median dari kedua kelompok berbeda.
mycols <- c("#CD534CFF", "#EFC000FF", "#0073C2FF")
ggplot(Salaries, aes(x = rank,
y = salary)) +
geom_boxplot(notch = TRUE,
fill = mycols,
alpha = .7) +
theme_minimal() +
labs(title = "Salary Distribution by rank")
Box Plots
Dalam contoh di atas, ketiga kelompok tersebut tampak berbeda. Salah satu keuntungan dari plot kotak adalah lebarnya biasanya tidak berarti. Ini memungkinkan kamu membandingkan distribusi banyak grup dalam satu grafik.
Plot biola hamppir sama dengan plot kernel density tetapi dicerminkan dan diputar $ 90 ^ 0 $. Mari kita plot distribusi gaji dengan peringkat menggunakan plot biola.
ggplot(Salaries,
aes(x = rank,
y = salary)) +
geom_violin(fill = "azure1") +
geom_boxplot(width = .2,
fill = mycols,
outlier.color = "red",
outlier.size = 2) +
theme_minimal() +
labs(title = "Salary distribution by rank")
Violin Plots
Plot ridgeline (juga disebut plot kegembiraan) menampilkan distribusi variabel kuantitatif untuk beberapa kelompok. Mereka mirip dengan plot kernel density dengan vertikal faceting, tetapi mengambil lebih sedikit ruang. Plot ridgeline dibuat dengan paket ggridges
.
mennggunakan data Fuel economy , mari kita plot distribusi mil mengemudi kota per galon dengan kelas mobil.
library(dplyr) # manipulasi
library(ggplot2) # visualisasi
library(ggridges) # untuk menangani visulisasi yang tumpang tindih
ggplot(mpg,
aes(x = cty,
y = class,
fill = class)) +
geom_density_ridges(alpha = 0.7) +
theme_ridges() +
labs("Highway mileage by auto class") +
theme(legend.position = "none")
Ridgeline Plots
Saya telah menyembunyikan legenda di sini karena itu berlebihan (distribusinya sudah diberi label pada sumbu y). Tidak mengherankan, truk pikap memiliki jarak tempuh yang paling rendah, sementara subkompak dan mobil kompak cenderung mencapai peringkat. Namun, ada rentang skor jarak tempuh yang sangat luas untuk mobil-mobil kecil ini.
Perhatikan kemungkinan tumpang tindih distribusi adalah trade-off untuk grafik yang lebih kompak. Anda dapat menambahkan transparansi jika tumpang tindih parah menggunakan geom_density_ridges (alpha = n), dengan n berkisar dari 0 (transparan) hingga 1 (buram). lihat package vingnette untuk lebih detail.
Metode populer untuk membandingkan grup pada variabel numerik adalah plot rata-rata dengan bilah kesalahan. Error bar dapat mewakili deviasi standar, error standar mean, atau interval kepercayaan. Di bagian ini, kami akan memplot cara dan kesalahan standar. Kita dapat menggunakan teknik yang sama untuk membandingkan gaji berdasarkan pangkat dan jenis kelamin. (Secara teknis, ini bukan bivariat karena kami merencanakan pangkat, jenis kelamin, dan gaji, tetapi tampaknya cocok di sini).
library(dplyr) # manipulasi
library(ggplot2) # visualisasi
library(ggridges) # untuk menangani visulisasi yang tumpang tindih
# menghitung rataa, standar deviasi,
# standar error, kepercayaan 95%
# interval berdasarkan pangkat
plotdata <- Salaries %>%
group_by(rank, sex) %>%
dplyr::summarize(n = n(),
mean = mean(salary),
sd = sd(salary),
se = sd/sqrt(n),
ci = qt(0.975, df = n - 1) * sd / sqrt(n))
# memperbiaki rataan/standar error plot
pd <- position_dodge(0.2)
ggplot(plotdata,
aes(x = factor(rank,
labels = c("Assistant\nProfessor",
"Associate\nProfessor",
"Full\nProfessor")),
y = mean,
group=sex,
color=sex)) +
geom_point(position=pd,
size = 3) +
geom_line(position = pd,
size = 1) +
geom_errorbar(aes(ymin = mean - se,
ymax = mean + se),
width = .1,
position = pd,
size = 1) +
scale_y_continuous(label = scales::dollar) +
scale_color_brewer(palette="Set1") +
theme_minimal() +
labs(title = "Mean salary by rank and sex",
subtitle = "(mean +/- standard error)",
x = "",
y = "",
color = "Gender")
Line Plots
Hubungan antara variabel pengelompokan dan variabel numerik dapat ditampilkan dengan plot pencar. Misalnya, plot distribusi gaji menurut peringkat menggunakan plot strip. Plot sebar satu dimensi ini disebut plot strip. Sayangnya, pencetakan poin yang berlebihan membuat interpretasi menjadi sulit. Hubungannya lebih mudah dilihat jika titik-titiknya goyah. Pada dasarnya nomor acak kecil ditambahkan ke setiap koordinat y. Juga lebih mudah untuk membandingkan kelompok jika kita menggunakan warna.
library(ggplot2) # visualisasi
library(scales) # infrastruktur penskalaan
ggplot(Salaries,
aes(y = factor(rank,
labels = c("Assistant\nProfessor",
"Associate\nProfessor",
"Full\nProfessor")),
x = salary,
color = rank)) +
geom_jitter(alpha = 0.7,
size = 1.5) +
scale_x_continuous(label = dollar) +
labs(title = "Academic Salary by Rank",
subtitle = "9-month salary for 2008-2009",
x = "",
y = "") +
theme_minimal() +
theme(legend.position = "none")
Strip Plots
Opsi legend.position =" none "
digunakan untuk menyembunyikan legenda (yang tidak diperlukan di sini). Plot jittered bekerja dengan baik jika jumlah poin tidak terlalu besar.
Mungkin lebih mudah untuk memvisualisasikan distribusi jika kita menambahkan plot kotak ke plot jitter. Beberapa opsi ditambahkan untuk membuat plot ini.
size = 1
membuat garis lebih tebaloutlier.color = "black"
membuat tepi hitamoutlier.shape = 1
menentukan lingkaran untuk tepioutlier.size = 3
menaikkan ukuran tepialpha = 0.5
membuat titik transparanwidth = .2
mengurngi jumlah jitter (.4 errornya)Finally, sumbu $ x $ dan $ y $ dihormati menggunakan fungsi coord_flip
(yaitu, grafik diputar pada sisinya).
library(ggplot2) # visualisasi
library(scales) # infrastruktur penskalaan
ggplot(Salaries,
aes(x = factor(rank,
labels = c("Assistant\nProfessor",
"Associate\nProfessor",
"Full\nProfessor")),
y = salary,
color = rank)) +
geom_boxplot(size=1,
outlier.shape = 1,
outlier.color = "black",
outlier.size = 3) +
geom_jitter(alpha = 0.5,
width=.2) +
scale_y_continuous(label = dollar) +
labs(title = "Gaji akademik berdasarkan pangkat",
subtitle = "9 bulan gaji untuk 2008-2009",
x = "",
y = "") +
theme_minimal() +
theme(legend.position = "none") +
coord_flip()
Combining Jitter and Boxplots 1
Sebelum melanjutkan, ada baiknya menyebutkan fungsi geom_boxjitter
disediakan di paket ggpol
. Ini membuat plot kotak hibrida - setengah plot kotak, setengah plot sebar.
library(ggplot2) # visualisasi
library(scales) # infrastruktur penskalaan
library(ggpol) # boxplot hybrid -half scatterplot
ggplot(Salaries,
aes(x = factor(rank,
labels = c("Assistant\nProfessor",
"Associate\nProfessor",
"Full\nProfessor")),
y = salary,
fill=rank)) +
geom_boxjitter(color="black",
jitter.color = "darkgrey",
errorbar.draw = TRUE) +
scale_y_continuous(label = dollar) +
labs(title = "Gaji akademik berdasarkan pangkat",
subtitle = "9 bulan gaji untuk 2008-2009",
x = "",
y = "") +
theme_minimal() +
theme(legend.position = "none")
Combining Jitter and Boxplots 2
Plot lebah (juga disebut plot pencar biola) mirip dengan plot sebar jittered, yang menampilkan variabel distribusi kuantitatif dengan memplot titik dengan cara yang mengurangi tumpang tindih. Selain itu, mereka juga membantu menampilkan data kepadatan di setiap titik (dengan cara yang mirip dengan violin plot). Melanjutkan contoh sebelumnya.
library(ggplot2) # Visualisasi
library(scales) # infrastruktur skala
library(ggbeeswarm) # mengurangi tumpang tindih
ggplot(Salaries,
aes(x = factor(rank,
labels = c("Assistant\nProfessor",
"Associate\nProfessor",
"Full\nProfessor")),
y = salary,
color = rank)) +
geom_quasirandom(alpha = 0.7,
size = 1.5) +
scale_y_continuous(label = dollar) +
labs(title = "Gaji akademik berdasarkan pangkat",
subtitle = "9 bulan gaji untuk 2008-2009",
x = "",
y = "") +
theme_minimal() +
theme(legend.position = "none")
Beeswarm Plots
Plot dibuat menggunakan fungsi geom_quasirandom. Plot ini bisa lebih mudah dibaca daripada plot strip bergoyang sederhana. Untuk mempelajari lebih lanjut tentang plot ini, lihat Beeswarm-style plots dengan ggplot2.
Plot Cleveland berguna saat Anda ingin membandingkan statistik numerik untuk sejumlah besar grup. Misalnya, Anda ingin membandingkan angka harapan hidup tahun 2007 untuk negara Asia dengan menggunakan ekstensi data gapminder.
library(dplyr) # manipulasi data
library(ggplot2) # visualisasi
library(scales) # infrastruktur skala
library(ggbeeswarm) # mengurangi tumpang tingdih
library(gapminder) # dataset `gapminder`
data(gapminder, package="gapminder") # muat data `gapminder`
# bagain negara asia 2007
library(dplyr)
plotdata <- gapminder %>%
filter(continent == "Asia" &
year == 2007)
# plot cleveland yang lebih bagus
ggplot(plotdata,
aes(x=lifeExp,
y=reorder(country, lifeExp))) +
geom_point(color="blue",
size = 2) +
geom_segment(aes(x = 40,
xend = lifeExp,
y = reorder(country, lifeExp),
yend = reorder(country, lifeExp)),
color = "azure3") +
labs (x = "Harapan hidup (tahun)",
y = "",
title = "Harapan hidup menurut negaraCountry",
subtitle = "GapMinder data untuk Asia - 2007") +
theme_minimal() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank())
Beeswarm Plots
Jepang tentu saja mempunyai harapan hidup paling tinggi, sementara afganistan paling rendah sejauh ini. plot ini dinamakan plot lolipop.
Grafik multivariasi menampilkan hubungan antara tiga variabel atau lebih. Ada dua metode umum untuk mengakomodasi banyak variabel: pengelompokan dan faceting.
Dalam pengelompokan, nilai dari dua variabel pertama dipetakan ke sumbu x dan y. Kemudian variabel tambahan dipetakan ke karakteristik visual lainnya seperti warna, bentuk, ukuran, jenis garis, dan transparansi. Pengelompokan memungkinkan Anda untuk memplot data untuk beberapa grup dalam satu grafik. Menggunakan Dataset Salaries, mari kita tunjukkan hubungan antara yrs.since.phd dan gaji.
library(carData) # dataset
library(ggplot2) # visualisasi
data(Salaries, package="carData")
ggplot(Salaries, aes(x = yrs.since.phd,
y = salary,
color=rank)) +
geom_point() +
theme_minimal() +
labs(title = "Gaji akademis berdasarkan pangkat dan tahun sejak gelar")
Multivariate Grouping Plot 1
Selanjutnya, tambahkan jenis kelamin profesor, menggunakan bentuk titik untuk menunjukkan jenis kelamin. Kami akan meningkatkan ukuran poin dan menambahkan transparansi untuk memperjelas poin individu.
library(carData) # dataset
library(ggplot2) # visualisasi
ggplot(Salaries,
aes(x = yrs.since.phd,
y = salary,
color = rank,
shape = sex)) +
geom_point(size = 3, alpha = .6) +
theme_minimal() +
labs(title = "Gaji akademis berdasarkan pangkat, jenis kelamin, dan tahun sejak gelar")
Multivariate Grouping Plot 2
Kami tidak dapat mengatakan bahwa ini adalah grafik yang bagus. Ini sangat sibuk, dan mungkin sulit untuk membedakan profesor pria dari wanita. Faceting (dijelaskan di bagian selanjutnya) mungkin akan menjadi pendekatan yang lebih baik.
Perhatikan perbedaan antara menetapkan nilai konstan (seperti size = 3) dan pemetaan variabel ke karakteristik visual (misalnya, color = rank). Pemetaan selalu ditempatkan di dalam fungsi aes, sedangkan penetapan nilai konstanta selalu muncul di luar fungsi aes.
Berikut adalah contoh yang lebih bersih. Kami akan membuat grafik hubungan antara tahun sejak Ph.D. dan gaji yang menggunakan ukuran poin untuk menunjukkan masa kerja. Ini disebut plot gelembung.
library(carData) # dataset
library(ggplot2) # visualisasi
ggplot(Salaries,
aes(x = yrs.since.phd,
y = salary,
color = rank,
size = yrs.service)) +
geom_point(alpha = .8) +
theme_minimal() +
labs(title = "Gaji akademis berdasarkan pangkat, jenis kelamin, dan tahun sejak gelar")
Multivariate Grouping Plot 3
Jelas ada hubungan positif yang kuat antara tahun-tahun sejak Ph.D. dan tahun layanan. Asisten Profesor jatuh dalam 0-11 tahun sejak Ph.D. dan jangkauan layanan 0-10 tahun. Profesional yang jelas sangat berpengalaman tidak hanya berada di level Asisten Profesor (mereka mungkin dipromosikan atau keluar dari Universitas). Kami tidak menemukan batasan waktu yang sama antara Associate dan Full Professor. Bubble plots akan dijelaskan lebih detail di bab selanjutnya.
Sebagai contoh terakhir, mari kita lihat yrs.since.phd vs gaji dan tambahkan jenis kelamin menggunakan warna dan quadratic best fit lines.
library(carData) # dataset
library(ggplot2) # visualisasi
ggplot(Salaries,
aes(x = yrs.since.phd,
y = salary,
color = sex)) +
geom_point(alpha = .4,
size = 3) +
geom_smooth(se=FALSE,
method = "lm",
formula = y~poly(x,2),
size = 1.5) +
labs(x = "tahun sejak Ph.D.",
title = "gaji akademik berdasarkan kelamin dan pengalaman",
subtitle = "9 bulan gaji untuk 2008-2009",
y = "",
color = "Sex") +
scale_y_continuous(label = scales::dollar) +
scale_color_brewer(palette = "Set1") +
theme_minimal()
Multivariate Grouping Plot 4
Pengelompokan memungkinkan Anda untuk memplot beberapa variabel dalam satu grafik, menggunakan karakteristik visual seperti warna, bentuk, dan ukuran. Dalam faset, grafik terdiri dari beberapa plot terpisah atau kelipatan kecil, satu untuk setiap tingkat variabel ketiga, atau kombinasi variabel. Paling mudah untuk memahami ini dengan sebuah contoh.
library(carData) # dataset
library(ggplot2) # visualisasi
ggplot(Salaries, aes(x = salary)) +
geom_histogram(fill = "cornflowerblue",
color = "white") +
facet_wrap(~rank, ncol = 1) +
theme_minimal() +
labs(title = "histogram gaji berdasarkan pangkat")
Multivariate Faceting 1
Fungsi facet_wrap
membuat grafik terpisah untuk setiap tingkat peringkat. Opsi ncol
mengontrol jumlah kolom. Dalam contoh berikutnya, dua variabel digunakan untuk mendefinisikan faset.
Di sini, fungsi menetapkan jenis kelamin ke baris dan peringkat ke kolom, membuat matriks 6 plot dalam satu grafik.
library(carData) # dataset
library(ggplot2) # visualisasi
ggplot(Salaries, aes(x = salary / 1000)) +
geom_histogram(color = "white",
fill = "cornflowerblue") +
facet_grid(sex ~ rank) +
theme_minimal() +
labs(title = "histogram gaji menurut pangkat dan kelamin",
x = "Salary ($1000)")
Multivariate Faceting 2
Kami juga dapat menggabungkan pengelompokan dan faceting. Mari kita gunakan plot Mean / SE dan faceting untuk membandingkan gaji profesor pria dan wanita, dalam pangkat dan disiplin. Kami akan menggunakan warna untuk membedakan jenis kelamin dan faceting untuk membuat plot peringkat berdasarkan kombinasi disiplin ilmu.
library(carData) # dataset
library(ggplot2) # visualisasi
library(dplyr) # manipulasi data
# hitung rataan dan standar deviasi menurut kelamin
# pangkat dan disiplin
plotdata <- Salaries %>%
group_by(sex, rank, discipline) %>%
dplyr::summarize(n = n(),
mean = mean(salary),
sd = sd(salary),
se = sd / sqrt(n))
# buat tabel yang lebih baik untuk disimplin
plotdata$discipline <- factor(plotdata$discipline,
labels = c("Theoretical",
"Applied"))
# create plot
ggplot(plotdata,
aes(x = sex,
y = mean,
color = sex)) +
geom_point(size = 3) +
geom_errorbar(aes(ymin = mean - se,
ymax = mean + se),
width = .1) +
scale_y_continuous(breaks = seq(70000, 140000, 10000),
label = scales::dollar) +
facet_grid(. ~ rank + discipline) +
theme_bw() +
theme(legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor.y = element_blank()) +
labs(x="",
y="",
title="Gaji akademik sembilan bulan menurut jenis kelamin, disiplin, dan pangkat ",
subtitle = "(Sarana dan kesalahan standar)") +
scale_color_brewer(palette="Set1")
Multivariate Faceting 3
pernyataanfacet_grid(. ~ rank + discipline)
menentukan tidak ada variabel baris (.) dan kolom yang ditentukan oleh kombinasi peringkat dan disiplin.
Fungsi theme ()
membuat tema hitam dan putih dan menghilangkan garis grid vertikal dan garis grid horizontal minor. Fungsi scale_color_brewer ()
mengubah skema warna untuk titik dan bilah kesalahan.
Pada pandangan pertama, tampaknya ada perbedaan gender dalam gaji untuk associate dan profesor penuh di bidang teoretis. Saya mengatakan “mungkin” karena kami belum melakukan pengujian hipotesis formal (ANCOVA dalam kasus ini). Lihat Customizing bagian untuk mempelajari lebih lanjut tentang menyesuaikan tampilan grafik.
Sebagai contoh terakhir, kami akan beralih ke kumpulan data baru dan memetakan perubahan harapan hidup dari waktu ke waktu untuk negara-negara di “Asia”. Data tersebut berasal dari dataset gapminder
dalam paketgapminder
. Setiap negara muncul dalam fasetnya sendiri. Fungsi tema digunakan untuk menyederhanakan warna latar belakang, memutar teks sumbu x, dan memperkecil ukuran font.
library(gapminder) # dataset
library(ggplot2) # visualisasi
library(dplyr) # manipulasi data
# plot harapan hidup menurut tahun secara terpisah
# untuk setiap negara di Amerika
data(gapminder, package = "gapminder")
# pilih data amerka
plotdata <- dplyr::filter(gapminder,
continent == "Asia")
# plot harapan hidup menurut tahun, untuk setiap negara
ggplot(plotdata, aes(x=year, y = lifeExp)) +
geom_line(color="grey") +
geom_point(color="blue") +
facet_wrap(~country) +
theme_minimal(base_size = 9) +
theme(axis.text.x = element_text(angle = 45,
hjust = 1)) +
labs(title = "perubah harapan hidup",
x = "Year",
y = "Life Expectancy")
Multivariate Faceting 4