Email: jirene113@gmail.com
RPubs: https://rpubs.com/datazerotohero/
Github: https://github.com/datazerotohero/
Data visualization adalah teknik mengambil informasi dari data ke dalam konteks visual, seperti bagan, grafik, dan peta. Visualisasi data dimungkinkan untuk menangani suatu peristiwa kecil dan peristiwa data besar menjadi lebih mudah dipahami oleh otak manusia, dan visualisasi juga membuatnya lebih andal untuk mendeteksi pola, tren, dan pencilan dalam kelompok data.
R adalah platform yang luar biasa untuk analisis data, yang mampu membuat hampir semua jenis grafik. Buku ini membantu Anda membuat visualisasi paling populer - dari plot cepat dan kotor hingga grafik yang siap dipublikasikan. Di sini kita akan belajar bagaimana memvisualisasikan data dari univariat, bivariate, dan mulitivariate. Dari yang paling dasar hingga mahir, harap ikuti instruksi berikut selangkah demi selangkah.
Plot univariat biasanya digunakan untuk melakukan distribusi data dari satu variabel. Variabelnya bisa kategoris (e.g., gender, race, country, city, etc) atau kuantitatif (e.g., age, weight, inflation, rate, etc).
Distribusi variabel kategorikal tunggal biasanya diplot dengan bar-chart, pie-chart, atau (lebih jarang) dengan treemap.
Berikut adalah contoh yang menunjukkan frekuensi dari dataset Marriage, saya kumpulkan dari paket mosaicData. Kami menggunakan diagram batang untuk menampilkan distribusi peserta pernikahan menurut Zodiac.
## Warning: package 'ggplot2' was built under R version 4.0.3
#setwd("D:\\FILE IRENE\\SEMESTER 3\\Algoritma&Struktur Data (Pak Bakti)\\Data") # jangan lupa setel direktori kerja.
Marriage<- read.csv("Data/Marriage.csv") # memuat data dari PC anda.
ggplot(Marriage, aes(x = zodiacs)) + # plot distribusi `Zodiacs`.
geom_bar(fill = "cornflowerblue",color= "black")+ # kamu bisa mengubah warna.
theme_minimal() + # gunakan tema minimal.
labs(x = "Zodiacs", # anda dapat mengubah label dan plot judul
y = "Frequency",
title = "Marriage Participants by Zodiacs") Categorical Bar Chart 1
Batang bisa mewakili persen daripada hitungan. Untuk diagram batang (zodiak), kodenya aes(x=sign) is actually a shortcut for aes(x = sign, y = ..count..), dimana ..hitung .. adalah variabel khusus yang mewakili frekuensi dalam setiap kategori. Anda dapat menggunakan ini untuk menghitung persentase, dengan menentukan variabel y secara eksplisit.
Di R, warna dapat ditentukan baik dengan nama (misalnya col =" red ") seperti yang Anda lihat pada gambar berikut.
atau Anda dapat menetapkan warna dengan menggunakan triplet RGB heksadesimal (seperti col =“ # FFCC00 ”) More. Selain itu, Anda juga dapat menggunakan sistem warna lain seperti yang diambil dari paket RColorBrewer More dan paket grDevices (Anda mungkin sudah memuatnya) berisi sejumlah palet, ketik? rainbow ini di Rconsole Anda. Mari pertimbangkan grafik berikut:
library(ggplot2) # untuk visualisasi
ggplot(Marriage,
aes(x = zodiacs,
y = ..count.. / sum(..count..))) +
geom_bar(fill = rainbow(12), color= "azure4") +
theme_minimal() + # gunakan tema minimal
labs(x = "Zodiacs",
y = "Percent",
title = "Marriage Participants in Percent") +
scale_y_continuous(labels = scales::percent) # tambahkan simbol % ke label sumbu yCategorical Bar Chart 2
Seringkali membantu untuk mengurutkan bar berdasarkan frekuensi. Pada kode di bawah ini, frekuensi dihitung secara eksplisit. Kemudian fungsi menyusun ulang digunakan untuk mengurutkan kategori berdasarkan frekuensi. Opsi stat =" identity " memberi tahu fungsi plotting untuk tidak menghitung jumlah, karena mereka diberikan secara langsung.
library(dplyr) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
plotdata <- Marriage %>% # memuat set data
count(zodiacs) # jumlah peserta di setiap `zodiak`
# plot batang dalam urutan menaik
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 = "Zodiacs",
y = "Frequency",
title = "Sorting Categories")Categorical Bar Chart 3
Jika Anda mungkin ingin memberi label pada setiap batang dengan nilai numeriknya, periksa kode berikut:
library(dplyr) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
library(scales) # secara otomatis menentukan jeda / label
plotdata <- Marriage %>%
count(zodiacs) %>%
mutate(pct = n / sum(n),
pctlabel = paste0(round(pct*100), "%"))
# plot batang sebagai persentase, dalam urutan 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) +
theme_minimal() + # gunakan tema minimal
scale_y_continuous(labels = percent) +
labs(x = "Zodiacs",
y = "Percent",
title = "Labeling Bars")Categorical Bar Chart 4
Terkadang label kategori mungkin tumpang tindih, itu sangat mengganggu bukan ?. Jadi, Anda bisa memutar label sumbu.
library(ggplot2) # untuk visualisasi
library(scales) # secara otomatis menentukan jeda / label
# plot batang sebagai persentase,
# dalam urutan 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 = "Zodiacs",
y = "Percent",
title = "Overlapping Labels")+
theme(axis.text.x = element_text(angle = 25, hjust = 1))Categorical Bar Chart 5
Atau, Anda dapat menangani situasi ini dengan membalik sumbu x dany.
library(ggplot2) # untuk visualisasi
library(scales) # secara otomatis menentukan jeda / label
# plot batang sebagai presentase,
# dalam urutan 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 tujuan Anda adalah membandingkan frekuensi kategori, lebih baik Anda menggunakan diagram batang (manusia lebih baik dalam menilai panjang batang daripada volume irisan pai). Jika tujuan Anda 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 untuk Anda. Dibutuhkan lebih banyak kode untuk membuat diagram lingkaran yang menarik di R.
Ini adalah contoh untuk membuat diagram lingkaran ggplot2 dasar:
library(dplyr) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
library(scales) # secara otomatis menentukan jeda / label
# Data preparation
plotdata <- Marriage %>%
count(race) %>%
arrange(desc(race)) %>%
mutate(prop = round(n*100/sum(n), 1),
lab.ypos = cumsum(prop) - 0.5*prop)
# Create Pie chart
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
Bagan donat hanyalah bagan 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) # untuk visualisasi
library(scales) # secara otomatis menentukan jeda / label
# create Donut chart
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 menjadi mewah dan tambahkan label, sambil menghilangkan legenda.
library(ggplot2) # untuk visualisasi
library(scales) # secara otomatis menentukan jeda / label
# add percent label
plotdata$percent <- paste0(plotdata$race, "\n",
round(plotdata$prop), "%")
# create Donut chart in percent
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 = "Marriage Participants by Race")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.
## Warning: package 'treemapify' was built under R version 4.0.3
library(scales) # secara otomatis menentukan jeda / label
plotdata <- Marriage %>%
count(officialTitle)
ggplot(plotdata,
aes(fill = officialTitle,
area = n)) +
geom_treemap() +
labs(title = "Marriage Participants by Officiate")Categorical Tree Map 1
Ini adalah versi yang lebih berguna dengan label.
ggplot(plotdata,
aes(fill = officialTitle,
area = n,
label = officialTitle)) +
geom_treemap() +
geom_treemap_text(colour = "white",
place = "centre") +
labs(title = "Marriage Participants by Officiate") +
theme(legend.position = "none")Categorical Tree Map 2
Distribusi variabel kuantitatif tunggal biasanya diplot dengan histogram, [kepadatan kernel] () plot, atau plot titik.
Menggunakan kumpulan data Pernikahan, mari kita gambarkan usia peserta pernikahan.
library(ggplot2) # untuk visualisasi
ggplot(Marriage, aes(x = age)) +
geom_histogram(fill = "cornflowerblue",
color = "white",bins = 20) +
theme_minimal() + # gunakan tema minimal
labs(title="Marriage Participants by age (Basic)",
x = "Age")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:
Cara lainnya, Anda dapat menentukan binwidth, lebar nampan yang diwakili oleh batang.
library(ggplot2) # untuk visualisasi
library(scales) # secara otomatis menentukan jeda / label
ggplot(Marriage,
aes(x = age,
y= ..count.. / sum(..count..))) +
geom_histogram(fill = "cornflowerblue",
color = "white",
binwidth = 5) +
theme_minimal() + # gunakan tema minimal
labs(title="Marriage Participants by age (Alternative Bins and bandwidths)",
y = "Percent",
x = "Age") +
scale_y_continuous(labels = percent)Quantitative Histogram 2
Seperti bagan batang, sumbu y dapat mewakili hitungan atau persen dari total.
library(ggplot2) # untuk visualisasi
library(scales) # secara otomatis menentukan jeda / label
ggplot(Marriage,
aes(x = age,
y= ..count.. / sum(..count..))) +
geom_histogram(fill = "cornflowerblue",
color = "white",
binwidth = 5) +
theme_minimal() + # gunakan tema minimal
labs(title="Marriage Participants by age (Percent)",
y = "Percent",
x = "Age") +
scale_y_continuous(labels = percent)Quantitative Histogram 3
An alternative to a histogram is the kernel density plot. Technically, kernel density estimation is a non-parametric method for estimating the probability density function of a continuous random variable. (What??) Basically, we are trying to draw a smoothed histogram, where the area under the curve equals one.
library(ggplot2) # untuk visualisasi
ggplot(Marriage, aes(x = age)) +
geom_density(fill = "indianred3") +
theme_minimal() + # gunakan tema minimal
labs(title = "Marriage Participants by age")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 = "Participants by age",
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) # untuk visualisasi
ggplot(Marriage, aes(x = age)) +
geom_dotplot(fill = "gold",
color = "azure4",
binwidth = 2) +
theme_minimal() + # gunakan tema minimal
labs(title = "Participants by age",
y = "Proportion",
x = "Age")Dot Chart
Ada lebih banyak pilihan yang tersedia. Click here untuk detail dan contoh.
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 dalam Fuel economy dataset.
library(ggplot2) # untuk visualisasi
mpg$drv<-factor(mpg$drv,
levels = c("f", "r", "4"),
labels = c("front-wheel", "rear-wheel", "4-wheel"))
# diagram batang bertumpuk
ggplot(mpg,
aes(x = class,
fill = drv)) +
geom_bar(position = "fill") +
theme_minimal() + # gunakan tema fungsi
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) # untuk visualisasi
ggplot(mpg, aes(x = class, fill = drv)) +
theme_minimal() + # gunakan 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. Anda 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 naik saat Anda beralih dari kompak, ke menengah, ke minivan.
library(dplyr) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
library(scales) # secara otomatis menentukan jeda/label
# membuat kumpulan data ringkasan (data manipulation)
plotdata <- mpg %>%
group_by(class, drv) %>%
dplyr::summarize(n = n()) %>%
mutate(pct = n/sum(n),
lbl = scales::percent(pct))
# membuat diagram batang tersegmentasi
# menambahkan label ke setiap segmen
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 = "Percent",
fill = "Drive Train",
x = "Class",
title = "Automobile Drive by Class") +
theme_minimal()Segmented Bar Chart
Notes: Anda 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 paket [ggmosaic] (https://cran.r-project.org/web/packages/ggmosaic/vignettes/ggmosaic.html), saya merekomendasikan penggunaan 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] (https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/Titanic.html), peran apa yang dimainkan oleh 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
## Warning: package 'vcd' was built under R version 4.0.3
## 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 independen, kita dapat memeriksa residual dari model dan memberi warna 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 scatterplot, dan tugas umum terdiri dari menyesuaikan model yang menjelaskan Y dalam fungsi X. Berikut adalah beberapa pola yang dapat Anda deteksi saat melakukan sebar.
library(ggplot2) # data visualisasi
library(hrbrthemes) # untuk `theme_ipsum ()` dan legenda
# Membuat 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 masing-masing 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) # untuk visualisasi
library(scales) # secara otomatis menentukan jeda / label
data(Salaries, package="carData")
# plot pencar yang ditingkatkan
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 = "Years Since PhD",
y = "",
title = "Experience vs. Salary",
subtitle = "9-month salary for 2008-2009")Scatterplot 1
Notes: geom_point opsi 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 tindih.Fungsi 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) # untuk 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 = "Years Since PhD",
y = "",
title = "Experience vs. Salary",
subtitle = "9-month salary for 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) # untuk 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() + # gunakan tema minimal
labs(x = "Years Since PhD",
y = "",
title = "Experience vs. Salary",
subtitle = "9-month salary for 2008-2009")Scatterplot Quadratic
Akhirnya, garis kesesuaian nonparametrik yang diperhalus seringkali dapat memberikan gambaran yang baik tentang hubungan tersebut. Default di ggplot2 adalah loess garis yang berarti penghalusan sebar berbobot lokal.
library(ggplot2) # untuk 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() + # gunakan tema minimal
labs(x = "Years Since PhD",
y = "",
title = "Experience vs. Salary",
subtitle = "9-month salary for 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 berdasarkan peringkat akademis mereka.
library(dplyr) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
library(scales) # secara otomatis menentukan jeda / label
data(Salaries, package="carData")
# hitung gaji rata-rata untuk setiap peringkat
plotdata <- Salaries %>%
group_by(rank) %>%
dplyr::summarize(mean_salary = mean(salary))
# plot berarti gaji dengan cara 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 = "Mean Salary by Rank",
subtitle = "9-month academic salary for 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 = "Salary distribution by rank")Grouped Kernel Density Plots
Opsi 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 kisaran 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 Anda membandingkan distribusi banyak grup dalam satu grafik.
Plot biola mirip 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 [kepadatan kernel] () dengan faceting () vertikal, tetapi memakan lebih sedikit ruang. Plot ridgeline dibuat dengan paket ggridges.
Menggunakan kumpulan data [Ekonomi bahan bakar] (https://bookdown.org/BaktiSiregar/data-science-for-beginners/datasets.html#fuel-economy-data), mari kita plot distribusi mil perjalanan kota per galon menurut kelas mobil .
library(dplyr) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
library(ggridges) # untuk menangani visulisasi yang tumpang tindih## Warning: package 'ggridges' was built under R version 4.0.3
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 [vingnette paket] (https://cran.r-project.org/web/packages/ggridges/vignettes/introduction.html) untuk lebih jelasnya.
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) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
library(ggridges) # untuk menangani visulisasi yang tumpang tindih
# menghitung rata-rata, standar deviasi,
# kesalahan standar, dan kepercayaan 95%,
# interval menurut peringkat
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))
# perbaikan sarana / plot kesalahan standar
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) # untuk 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 pencilan menjadi hitamoutlier.shape = 1 menentukan lingkaran untuk pencilanoutlier.size = 3 meningkatkan ukuran pencilanalpha = 0.5 membuat poin lebih transparanwidth = .2 mengurangi jumlah jitter (.4 adalah defaultnya)Terakhir, sumbu $ x $ dan $ y $ dihormati menggunakan fungsi coord_flip (yaitu, grafik diputar pada sisinya).
library(ggplot2) # untuk visualisasi
library(scales) # menskalakan infrastruktur penskalaan infrastruktur
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 = "Academic Salary by Rank",
subtitle = "9-month salary for 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] (https://www.rdocumentation.org/packages/ggpol/versions/0.0.1/topics/geom_boxjitter) yang disediakan di [ggpol] (https : //erocoar.github.io/ggpol/) paket. Ini membuat plot kotak hibrida - setengah plot kotak, setengah plot sebar.
library(ggplot2) # untuk visualisasi
library(scales) # infrastruktur penskalaan
library(ggpol) # boxplot hybrid -half scatterplot## Warning: package 'ggpol' was built under R version 4.0.3
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 = "Academic Salary by Rank",
subtitle = "9-month salary for 2008-2009",
x = "",
y = "") +
theme_minimal() +
theme(legend.position = "none")Combining Jitter and Boxplots 2
Plot hangat lebah (juga disebut plot pencar biola) mirip dengan plot sebar jittered, yang menampilkan distribusi variabel kuantitatif dengan memplot titik dengan cara yang mengurangi tumpang tindih. Selain itu, mereka juga membantu menampilkan kepadatan data di setiap titik (dengan cara yang mirip dengan [plot biola] ()). Melanjutkan contoh sebelumnya
library(ggplot2) # untuk visualisasi
library(scales) # infrastruktur penskalaan
library(ggbeeswarm) # mengurangi tumpang tindih## Warning: package 'ggbeeswarm' was built under R version 4.0.3
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 = "Academic Salary by Rank",
subtitle = "9-month salary for 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 jittered sederhana. Untuk mempelajari lebih lanjut tentang plot ini, lihat [Plot bergaya Beeswarm] (https://github.com/eclarke/ggbeeswarm) 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 menggunakan kumpulan data [gapminder] ().
library(dplyr) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
library(scales) # infrastruktur penskalaan
library(ggbeeswarm) # mengurangi tumpang tindih
library(gapminder) # untuk dataset `gapminder`## Warning: package 'gapminder' was built under R version 4.0.3
data(gapminder, package="gapminder") # memuat kumpulan data `gapminder`
# subset negara-negara Asia pada tahun 2007
library(dplyr)
plotdata <- gapminder %>%
filter(continent == "Asia" &
year == 2007)
# Plot Cleveland yang mewah
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 = "Life Expectancy (years)",
y = "",
title = "Life Expectancy by Country",
subtitle = "GapMinder data for Asia - 2007") +
theme_minimal() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank())Beeswarm Plots
Jepang jelas memiliki angka harapan hidup tertinggi, sedangkan Afghanistan sejauh ini paling rendah. Plot terakhir ini disebut juga grafik permen 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 kumpulan data [Gaji] (), mari kita tampilkan hubungan antara yrs.since.phd dan gaji.
library(carData) # untuk setdata
library(ggplot2) # untuk visualisasi
data(Salaries, package="carData")
ggplot(Salaries, aes(x = yrs.since.phd,
y = salary,
color=rank)) +
geom_point() +
theme_minimal() +
labs(title = "Academic salary by rank and years since degree")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) # untuk setdata
library(ggplot2) # untuk visualisasi
ggplot(Salaries,
aes(x = yrs.since.phd,
y = salary,
color = rank,
shape = sex)) +
geom_point(size = 3, alpha = .6) +
theme_minimal() +
labs(title = "Academic salary by rank, sex, and years since degree")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) # untuk setdata
library(ggplot2) # untuk visualisasi
ggplot(Salaries,
aes(x = yrs.since.phd,
y = salary,
color = rank,
size = yrs.service)) +
geom_point(alpha = .8) +
theme_minimal() +
labs(title = "Academic salary by rank, years of service, and years since degree")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. [Plot gelembung] () 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) # untuk setdata
library(ggplot2) # untuk 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 = "Years Since Ph.D.",
title = "Academic Salary by Sex and Years Experience",
subtitle = "9-month salary for 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) # untuk dataset
library(ggplot2) # untuk visualisasi
ggplot(Salaries, aes(x = salary)) +
geom_histogram(fill = "cornflowerblue",
color = "white") +
facet_wrap(~rank, ncol = 1) +
theme_minimal() +
labs(title = "Salary histograms by rank")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) # untuk setdata
library(ggplot2) # untuk visualisasi
ggplot(Salaries, aes(x = salary / 1000)) +
geom_histogram(color = "white",
fill = "cornflowerblue") +
facet_grid(sex ~ rank) +
theme_minimal() +
labs(title = "Salary histograms by sex and rank",
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) # untuk setdata
library(ggplot2) # untuk visualisasi
library(dplyr) # manipulasi data
# menghitung sarana dan kesalahan standar berdasarkan jenis 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 label yang lebih baik untuk disiplin
plotdata$discipline <- factor(plotdata$discipline,
labels = c("Theoretical",
"Applied"))
# membuat 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="Nine month academic salaries by gender, discipline, and rank",
subtitle = "(Means and standard errors)") +
scale_color_brewer(palette="Set1")Multivariate Faceting 3
Pernyataan facet_grid (. ~ Rank + disiplin) tidak menentukan variabel baris (.) Dan kolom yang ditentukan oleh kombinasi rank 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 bagian [Menyesuaikan] () 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) # untuk setdata
library(ggplot2) # untuk visualisasi
library(dplyr) # manipulasi data
# plot harapan hidup menurut tahun secara terpisah
# untuk setiap negara di Amerika
data(gapminder, package = "gapminder")
# Pilih data Amerika
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 = "Changes in Life Expectancy",
x = "Year",
y = "Life Expectancy") Multivariate Faceting 4