BAB 2
- GGPLOT2
GGplot2 adalah sistem perencaan untuk bahasa pemrograman R, berdasarkan tata bahasa grafis, yang mencoba untuk mengambil bagian yang baik dari pemetaan grafis dan tidak mengambil bagian buruknya. ggplot2 mengurus rincian yang berulang yang membuat perencanaan menjadi sulit (seperti menggambarkan legenda data) serta menyediakan model grafis yang kuat yang memudahkan untuk menghasilkan grafis berlapis-lapis yang kompleks.
Bab ini menjelaskan tentang teori dasar ggplot2: tata bahasa grafis berlapis. Tata bahasa grafis berlapis didasarkan pada tata bahasa grafis Wilkinson, akan tetapi ggplot2 menambahkan sejumlah perangkat tambahan yang membantu ggplot2 untuk menjadi lebih ekspresif dan cocok dengan environment Bahasa pemrograman R.
Tata bahasa ini berguna untuk para user dan juga para pengembang potensi grafik statistik. Sebagai pengguna, tata Bahasa ini membuat anda lebih mudah untuk secara iteratif memperbarui plot, mengubah fitur pada satu waktu. Tata bahasa juga berguna untuk menunjukkan aspek tingkat tinggi dari plot yang dapat diubah, memberikan user sebuah kerangka kerja untuk berpikir tentang grafis. Hal ini juga mendorong penggunaan grafis disesuaikan untuk masalah tertentu, daripada mengandalkan generik bernama grafis.
Sebagai pengembang, tata bahasa membuat lebih mudah untuk menambahkan kemampuan baru untuk ggplot2. pengembang hanya perlu menambahkan satu komponen yang dibutuhkan, dan pengembang dapat terus menggunakan semua komponen yang ada lainnya. Sebagai contoh, pengembang dapat menambahkan transformasi statistik baru. Hal ini juga berguna untuk menemukan jenis baru dari grafis, seperti tata bahasa secara efektif mendefinisikan ruang parameter grafis statistik.
Pada bagian ini anda juga akan belajar untuk membuat berbagai macam plot dengan fungsi Anda pertama ggplot2, plot(), plot singkat dan cepat. Ggplot memudahkan menghasilkan plot kompleks, dan sering membutuhkan beberapa baris kode menggunakan plotting lainnya sistem, dalam satu baris. Qplot() dapat melakukan ini karena hal ini didasarkan pada tata bahasa grafis, yang memungkinkan Anda untuk mebuat sederhana, namun ekspresif, deskripsi plot.
Dalam bab-bab selanjutnya Anda akan belajar untuk menggunakan semua kekuatan ekspresif tata bahasa, tapi di sini kami akan mulai sehingga Anda dapat bekerja dengan cara Anda. Anda juga akan mulai belajar beberapa terminologi ggplot2 yang akan digunakan seluruh buku. Qplot telah dirancang untuk menjadi sangat mirip plot, yang seharusnya membuat mudah jika Anda sudah akrab dengan merencanakan di R. Ingat, selama Anda bisa mendapatka ringkasan dari semua argumen untuk qplot dengan bantuan R? Qplot.
Dalam buku ini akan membahas :
- Penggunaan dasar qplot
- Bagaimana untuk memetakan variabel atribut etetika, seperti warna, ukuran dan bentuk
- Cara membuat berbagai jenis plot dengan menentukan geom berbeda
- Penggunaan faceting, juga dikenal sebagai jari-jari, pecah himpunan bagian dari data
- Bagaimana untuk menyesuaikan penampilat plot dengan menetapkan beberapa pilihan dasar
- Beberapa perbedaan penting antara plot() dan qplot()
Seperti plot, pertama-tama dua argumen untuk qplot() adalah x dan y, memberikan x dan y koordinat untuk benda-benda di plot. Ada juga opsional argumen data. Jika ini terspesifikasi, ggplot() akan melihat ke dalam frame data yang sebelum mencari benda-benda di ruang kerja Anda. Menggunakan argumen data direkomendasikan: ide yang baik untuk menyimpan data terkait dalam bingkai data tunggal. Jika Anda tidak menentukan satu, qlplot()akan mencoba untuk membangun satu untuk Anda dan mungkin terlihat di tempat yang salah. Berikut ini adalah contoh sederhana dari penggunaan qplot(). Ini menghasilkan sebuah sebar yang menunjukkan hubungan antara harga dan karat (berat) dari berlian.
Plot menunjukkan korelasi yang kuat dengan
outlier terkenal dan beberapa pergoresan vertikal yang menarik. Hubungan terlihat eksponensial, meskipun jadi hal pertama yang kita ingin lakukan adalah untuk mengubah variabel. Karena qplot() menerima fungsi variabel sebagai argumen, plot log (harga) vs log (karat).
Hubungan sekarang terlihat linier. Dengan banyak overplotting ini, meskipun kita perlu berhati-hati tentang menarik kesimpulan tegas. Argumen juga bisa kombinasi variabel yang ada, sehingga jika kita ingin tahu tentang hubungan antara volume berlian (didekati dengan x X y X z) dan berat, kita bisa melakukan hal berikut :
Kami harap kepadatan (berat/ volume) berlian konstan, dan melihat hubungan linier antara volume dan berat. Mayoritas berlian tampaknya jauth di sepanjang garis, tetapi ada beberapa outlier besar.
Warna, Ukuran, Bentuk, dan Atribut Estetika Lainnya
Perbedaan besar pertama ketika menggunakan ggplot dengan plot datang ketika Anda ingin menetapkan warna atau ukuran atau bentuk untuk titik-titik pada plot Anda. Dengan plot, itu tanggung jawab Anda untuk mengkonversi sebuah variabel kategoris dalam data Anda (misalnya,”apel”, “pisang”, “pir”) menjadi sesuatu yang diketahui bagaimana menggunakan (misalnya, “merah”, “kuning”, “hijau”). Qplot dapat melakukan ini untuk Anda secara otomatis, dan secara otomatis akan memberikan sebuah legenda yang memetakan atribut ditampilkan dengan nilai-nilai data. Hal ini membuat mudah untuk memasukkan data tambahan pada plot. Pada contoh berikut, kita menambahkan plot karat dan harga dengan informasi tentang warna berlian dan dipotong.
Warna, ukuran dan bentuk merupakan contoh atribut esteika visual sifat dll. Cara pengamatan ditampilkan.Untuk setiap atribut estetika, ada fungsi, yang disebut skala, yang memetakan nilai data ke nilai estetika yang valid. Ini adalah skala yang mengontrol penampilan poin dan legenda yang terkait.
Sebagai contoh, di plot diatas, warna skala peta J untuk ungu dan F hijau. (Perhatikan bahwa sementara saya menggunakan ejaan Inggris dalam buku ini, perangkat lunak juga menerima ejaan Amerika. Anda juga dapat secara manual mengatur estetika menggunakan I(), misalnya, warna = I (“merah”) atau size = I (2). Ini tidak sama dengan pemetaan dan dijelaskan lebih rinci. untuk dataset besar, seperti data berlian, semi-poin transparan sering berguna untuk mengurangi beberapa overplotting tersebut.
Untuk membuat warna semi-transparan anda dapat menggunakan estetika alpha, yang mengambil nilai antara 0 (benar-benar transparan) dan 1 (lengkap buram). Estetika Alpha sering berguna untuk menentukan transparansi sebagai fraksi, misalnya, 10/01 atau 20/01, sebagai yang spesifik denominator dan jumlah poin yang harus overplot untuk mendapatkan warna benar-benar buram.
Jenis atribut estetika berkerja lebih baik dengan berbagai jenis variable. Misalnya, warna dan bentuk bekerja dengan baik dengan variabel kategori, sedangkan ukuran bekerja lebih baik dengan variabel berkelanjutan. Jumlah data juga membuat perbedaan : jika ada banyak data, seperti di plot di atas, dapat sulit untuk membedakan pengelompokan. Sebuah solusi alternatif adalah dengan menggunakan faceting.
Qplot tidak terbatas pada scatterplots, tapi bisa menghasilkan hampir semua jenis plot dengan memvariasikan GEOM tersebut. Geom, pendek untuk objek geometris, menggambarkan jenis objek yang di gunakan untuk menampilkan data. Beberapa permata telah menjadi terkait transformasi statistik, misalnya, histogram adalah statistik Binning ditambah bar GEOM. Perbedaan komponen ini dijelaskan dalam bab berikutnya. Disini kita akan memperkenalkan paling umum dan berguna geoms, yang di selenggarakan oleh dimensi dari data yang mereka bekerja dengan. The Geoms berikut memungkinkan anda untuk menyelidiki hubungan dua dimensi :
- GEOM = “titik” menarik poin untuk menghasilkan sebuah sebar. Ini adalah dasar ketika ada input kedua argument x dan y untuk qplot().
- GEOM = “halus” ts halus untuk data dan menampilkan halus dan kesalahan standar, x 2.5.1.
- GEOM = “boxplot” menghasilkan plot kotak-dan-kumis untuk meringkas distribusi satu set poin, x 2.5.2.
- GEOM = “jalan” dan GEOM = “line” menarik garis antara titik data.
Secara tradisional ini digunakan untuk mengeksplorasi hubungan antara waktu dan variable lain, tapi garis dapat digunakan untuk bergabung pengamatan terhubung dalam cara lain. Sebuah plot garis dibatasi untuk menghasilkan garis yang melakukan perjalanan dari kiri ke kanan, sementara jalur bisa pergi ke segala arah, x 2.5.5. Untuk distribusi 1d, pilihan anda GEOM dipandu oleh jenis variabel :
- Untuk variabel kontinu, GEOM = “Histogram” menarik histogram, GEOM =”Freqpoly” poligon frekuensi, dan GEOM = “Density” menciptakan densitas plot, x 2.5.3. Histogram GEOM adalah default ketika anda hanya memasok xnilai qplot().
- Untuk variabel diskrit, GEOM = “Bar” membuat bar chart, x 2.5.4.
Anda pertama-tama dihadapi dengan faceting dalam pengantar untuk qplot() dan Anda mungkin sudah menggunakannya dalam plot Anda. Pemetaan menghasilkan kelipatan kecil masing-masing menunjukkan perbedaan bagian data. Kelipatan kecil adalah alat yang ampuh untuk menganalisis data eksplorasi: Anda dengan cepat dapat membandingkan pola diberbagai bagian data dan melihat apakah mereka sama atau berbeda-beda. Bagian ini akan membahas bagaimana Anda dapat memperindah aspek, khususnya cara mereka berinteraksi dengan skala posisi.
Ada dua jenis pemetaan yang disediakan oleh ggplot2: facet_grid dan facet_wrap. Facet Grid menghasilkan panel 2d yang didefinisikan oleh variabel yang pembentuk baris dan kolom, sedangkan Facet Wrap menghasilkan pita 1d panel yang tergabung ke dalam 2d. Susunan kotak mirip dengan susunan coplot di grafis dasar, dan susunan yang tergabung mirip dengan susunan panel dalam Lattice. Perbedaan-perbedaan ini diilustrasikan dalam Gambar.
Gambar: Sebuah sketsa yang menggambarkan selisih perbedaan antara kedua sistem pemetaan. facet_grid () (kiri) secara fundamental 2d, yang terdiri dari dua komponen bebas. facet_wrap () (kanan) adalah 1d, namun tergabung ke dalam 2d untuk menghemat ruang.
Ada dua argumen dasar untuk sistem pemetaan: variabel untuk persegi, dan apakah sisik posisi harus global atau lokal untuk segi tersebut. Cara pilihan ini dispesifikasikan sedikit berbeda untuk dua sistem, sehingga mereka dijelaskan secara terpisah di bawah ini. Anda dapat mengakses sistem pemetaan dari qplot (). Sebuah pemetaan 2d spesifik kation (misalnya, x ~ y) akan menggunakan facet_grid, sementara 1d spesifik kation (misalnya, ~ x) akan menggunakan facet_wrap. Plot persegi memiliki kemampuan mengisi banyak ruang, sehingga untuk bab ini kita akan menggunakan bagian dari dataset mpg yang memiliki jumlah tingkat tersusun: tiga silinder (4, 6, 8) dan dua jenis drive train ( 4 dan f). Hal ini menghilangkan 29 bagian dari dataset asli.
(> Mpg2 <- subset (! Mpg, cyl = 5 & drv% in% c ("4", "f")))
Jaringan persegi menjabarkan plot dalam kotak 2d. Ketika menentukan formula pemetaan, Anda menentukan variabel yang akan muncul di kolom dan yang akan muncul di baris, sebagai berikut:
- . ~. Bagian Dasar. Baik baris atau kolom yang dimetakan, sehingga Anda mendapatkan satu panel.
> Qplot (cty, hwy, data = mpg2) + facet_grid (. ~.)
- . ~ a Sebuah baris tunggal dengan beberapa kolom. Biasanya ini adalah arah yang paling berguna karena layar komputer biasanya lebih lebar dari mereka yang panjang. Arah pemetaan ini memfasilitasi perbandingan posisi y, karena skala vertikal berbanding lurus.
> Ggplot (cty, hwy, data = mpg2) + facet_grid (. ~ cyl)
- b ~. Sebuah kolom tunggal dengan beberapa baris. Arah ini memfasilitasi perbandingan posisi x, karena skala horisontal berbanding lurus, sehingga sangat berguna untuk membandingkan distribusi. Gambar berikut adalah contoh yang baik dari penggunaan ini.
> qplot(cty, data = mpg2, geom="histogram", binwidth = 2) + + facet_grid(cyl ~ .)
- a ~ b: Beberapa baris dan kolom. Anda biasanya akan ingin menempatkan variabel dengan jumlah terbesar dari tingkat di kolom, untuk mengambil keuntungan dari rasio aspek layar Anda.
> Ggplot (cty, hwy, data = mpg2) + facet_grid (drv ~ cyl)
- . ~ a + b atau a + b ~. Beberapa variabel dalam baris atau kolom (atau keduanya). Ini tidak mungkin berguna kecuali jumlah tingkat faktor kecil, Anda memiliki layar yang sangat lebar atau Anda ingin menghasilkan panjang, poster kurus.
Variabel muncul bersama di baris atau kolom yang bersarang dalam arti bahwa hanya kombinasi yang muncul dalam data yang akan muncul dalam plot. Variabel yang dispesifikasikan pada baris dan kolom akan menyeberang: semua kombinasi akan ditampilkan, termasuk yang tidak muncul dalam dataset asli: ini dapat mengakibatkan panel kosong.
Sebuah alternatif untuk grid adalah pita tergabung plot. Alih-alih memiliki kotak 2d dihasilkan oleh kombinasi dari dua (atau lebih) variabel, facet_wrap membuat pita panel panjang (dihasilkan oleh sejumlah variabel) dan membungkus menjadi 2d. Ini berguna jika Anda memiliki satu variabel dengan berbagai tingkatan dan ingin mengatur plot di lebih banyak ruang dengan cara efisien. Ini yang disebut teralis pada Lattice.
Gambar berikut menunjukkan distribusi peringkat film rata-rata sebesar dekade. Selisih utama dari waktu ke waktu tampaknya menjadi penyebaran meningkatnya peringkat. Ini mungkin sebuah artefak dari jumlah orang: film baru mendapatkan penilaian lebih dan peringkat rata-rata cenderung kurang ekstrim. Kerugian dari gaya faceting adalah bahwa hal itu sulit untuk membandingkan beberapa bagian yang harus dekat bersama-sama, seperti dalam contoh ini dimana plot untuk 50-an dan 60-an sangat berjauhan karena pita telah melilit. Gambar diproduksi dengan kode berikut:
movies$decade <- round_any(movies$year, 10, floor)
qplot(rating, ..density.., data=subset(movies, decade > 1890),
geom="histogram", binwidth = 0.5) +
facet_wrap(~ decade, ncol = 6)
Spesifikasi variabel faceting adalah dari bentuk ~ a + b + c. Secara dasar, facet_wrap akan mencoba dan lay out panel akan sedekat mungkin dengan persegi, dengan sedikit bias terhadap persegi panjang yang lebih tinggi. Anda dapat mengganti dasarnya dengan menetapkan ncol, nrow atau keduanya. Lihat dokumentasi untuk lebih banyak contoh.
Ada beberapa perbedaan yang penting antara plot dan qplot :
- qplot bukan generik : Anda tidak dapat melewati segala tipe dari objek R ke qplot dan mengharapkan perbedaan dari plot awal. Ingat, bagaimanapun ggplot() itu adalah generik, dan mungkin menyediakan sebuah titik awal untuk membuat visualisasi yang berubah pada objek R.
- Biasanya Anda akan menyuplai sebuah variabel ke atribut estetika yang Anda suka. Ini kemudian diubah ukurannya yang ditampilkan dengan legenda. Jika Anda ingin untuk menambahkan nilai, contoh untuk membuat titik merah, digunakan I() : warna = I(“merah”).
- Ketika Anda dapat meneruskan kegunaan nama estetika base R(col, pch, cex, dll), itu adalah ide yang bagus untuk menukar agar lebih mendekripsikan nama estetika ggplot2 (warna, bentuk dan ukuran). Mereka lebih mudah untuk diingat.
- Untuk menambahkan elemen grafik lebih jauh pada plot yang dibuat pada base grafik, Anda dapat menggunakan points(), lines() and text(). Dengan ggplot2, Anda butuh penambahan layer ke plot yang ada, terdeskripsi di bab selanjutnya.
Bab 3
Perangkat Lunak Facetgrid With Custom Projection
Penggunaan facetgrid with custom projection pada buku ini terdapat dua metode, yaitu Seaborn dan GGPLOT2. Kedua metode tersebut menggunakan pemrograman phyton dan perlu menambah packages tambahan untuk dapat menjalankan program facetgrid with custom projection. Berikut ini merupakan langkah-langkah nya :
Untuk mengistal versi yang telah dirilis anda dapat menggunakan pip (pip dalam instalasi seaborn) atau anda dapat menggunakan pip untuk instalasi versi pengembangan, dengan perintah pip instal git + (git://github.com/seaborn/waskom). Pilihan yang lain akan menggandakan repositori dari github dan mengistal dengan pip install dari direktori source. Seaborn ini sendiri berasal dari Phyton murni, sehingga cara pinstalasi nya cukup sederhana bila menggunakan versi pengembangan.
- Phyton 2.7 atau 3.3+
- Matplotlib
- Pandas
- Seaborn Import
- Scipy
- Umpy
Seaborn akan menerapkan parameter gaya default untuk global (umum) gaya matplotlib kamus ketika mengimpor. Ini datap mengubah tampilan semua plot, termasuk yang dibuat dengan menggunakan fungsi matplotlib langsung. Untuk itu dapat menggunakan matplotlib umum (bawaan)
Sebelum menggunakan GGPLOT2 ini diwajibkan untuk mengistalnya terlebih dahulu, dan pastikan anda mengistal versi terbaru dari http://r-project.org kemudian jalankan, berikut baris kode untuk meng-unduh dan menginstal paket ggplot2. Instal packages ggplot2 tidak sempurna? sehingga dari waktu ke waktu anda menemukan suatu masalah pada saat proses instalasi atau berkas tidak terunduh dengan baik.
Masuklah ke situs-situs ini, berisi tentang makalah yang berhubungan dengan ggplot2.
Website cran , http: //cran.r-project.or/web/paket/ggplot2/
ggplot2 mailing list , http://groups.google.com/grou /ggplot2/
Situs buku ,http://had.co.nz/ggplot2/book, menyediakan update untuk buku ini, serta PDF yang berisi semua grafis yang digunakan dalam buku ini, dengan kode dan data yang diperlukan untuk mereproduksi mereka .
Selain kedua aplikasi penting diatas yang terpenting adalah spesifikasi dari konputer untuk mengolah pemrograman ini. Pertama yang harus kita tau, apa sih komputer itu sendiri. Komputer adalah salah satu perangkat yang sudah menjadi kebutuhan manusia yang manusia gunakan untuk membantunya dalam menjalankan tugasnya seperti desain, pemrograman, mengetik, membantu menghiburnya seperti: memutar lagu, Video, bermain game, dan lain sebagainya karena melihat tujuan dan pemanfaat dari pemakaian komputer yang berbeda-beda, hal ini juga mempengaruhi spesifikasi (komponen-komponen) penyusun dari komputer itu sendiri agar komputer yang dibeli sesuai dengan keperluan penggunaannya.
Bagi seorang programmer saat ini, komputer adalah alat atau tools yang paling utama dalam menyelesaikan pekerjaan sehari-hari atau berbulan-bulan. Yang menjadi acuan adalah jenis sistem yang dibuat dan dibangun. Tiap programmer tentunya mendambakan komputer yang kencang speednya ketika digunakan untuk membuat aplikasi. Akan sangat menjengkelkan ketika komputer yang dipakai menjadi lambat dan ngehang. Untuk menjaga hal itu mari kita rakit komputer dengan keinginan kita.
Singkatnya yang terpenting adalah untuk mengolah suatu bahasa pemrograman dibutuhkan sebuah peran processor yang mumpuni. Untuk mengolah sedikit sintaks tidak memerlukan processor yang cepat, namun bayangkan jika kita mengolah banyak sekali kata atau sintaks pada suatu source code, maka carilah processor yang benar-benar bermanfaat dan harga terjangkau.
- Scipy+Numpy+Python+Matplotlib=Nice
Bagi anda yang ingin melakukan komputasi sains tapi tidak mempunyai MatLab, anda bisa menggunakan python sebagai penggantinya. Python adalah salah satu bahasa pemrograman. Python dapat di-download secara gratis di sini. Untuk keperluan komputasi, sebaiknya menggunakan versi 2.6.
Kalau anda belum pernah mempelajari python dan computer science sebelumnya, saya sangat merekomendasikan buku “Python Programming: An Introduction to Computer Science” karya John M Zelle. Buku tersebut bisa di-download di sini: Python Programming: An Introduction to Computer Science.
Sebenarnya python bukan bahasa pemrograman yang dikhususkan untuk melakukan komputasi, tapi dengan adanya beberapa modul-modul yang disediakan (secara gratis), python dapat digunakan untuk keperluan komputasi. Beberapa modul saya gunakan untuk komputasi antara lain: SciPy, NumPy, dan Matplotlib.
1 SciPy
SciPy adalah modul untuk melakukan beberapa perhitungan scientific dengan python. Sedikit contohnya adalah integral numerik, menyelesaikan persamaan differensial secara numerik, optimisasi, interpolasi, pemrosesan sinyal, dll. SciPy dapat di-download di situsnya dan dokumentasinya dapat di-download di situs resmi.
2 NumPy
NumPy adalah modul yang menyediakan objek-objek matematika yang memudahkan dalam melakukan perhitungan. Untuk menggunakan SciPy, biasanya kita membutuhkan NumPy. Objek utama yang disediakan NumPy adalah array yang dapat berperan sebagai matrix. Array ini tidak sama dengan array biasa pada bahasa-bahasa pemrograman secara umum. Agak susah untuk dijelaskan jadi sebaiknya anda mencoba sendiri.
3 Matplotlib
Nah, modul yang satu ini sangat penting untuk membuat grafik. Jika tidak ada modul ini, data-data yang diperoleh menggunakan NumPy dan SciPy tidak dapat divisualisasikan. Matplotlib menyediakan banyak fungsi di antaranya untuk menggambar grafik biasa, grafik polar, plot kontur, grafik 3D, dll. Untuk mengunjungi website matplotlib, bisa klik di sini. Kalau anda malas mendownload dan meng-install satu per satu modul di atas.
- Contoh
- penggunaan
KASUS I:
Tinjau sebuah benda dengan persamaan gerak sebagai berikut: y'= -y+\sin(4t) dan kondisi awalnya adalah y=2
Tugas kita adalah menggambarkan grafik y sebagai fungsi t. Berikut adalah kodenya:
>>> from pylab import * #mengimpor beberapa fungsi penting dari NumPy dan Matplotlib
>>> from scipy.integrate import odeint #Ordinary Differential Equation
>>> t = arange(0, 10.001, 0.01) #membuat rentang waktu dari 0-10 s
>>> f = lambda y,t: -y+sin(4*t) #fungsi y' dalam y dan t
>>> y = odeint(f, 2, t) #menyelesaikan persamaan differensial dengan 2 sebagai kondisi awal y
>>> plot(t,y) #memplot dengan t sebagai absis dan y sebagai ordinat
>>> show() #menampilkan grafik
Hasilnya adalah seperti ini:
KASUS II:
Tinjau sebuah balok yang sangat panjang dengan penampang berupa persegi (tanpa alas dan tanpa tutup). Balok tersebut terdiri dari 4 plat konduktor yang sangat panjang dan tidak terhubung satu sama lain. Misalkan salah satu plat diberi potensial 1V dan tiga plat yang lainnya diberi potensial 0V. Kita disuruh mencari distribusi potensial di dalam balok tersebut.
Cara mencarinya tidak saya jelaskan di sini karena cukup panjang (mungkin di post yang lain), tapi hasilnya adalah sebagai berikut:
Gambar di atas adalah plot kontur potensial sebagai fungsi posisi.
Kasus Atau Contoh Pemanfaatan Perangkat Lunak Untuk Facetgrid With Custom Projection
1 Dataset
Dalam bab ini kita hanya akan menggunakan satu sumber data, sehingga kita bisa dengan rinci merencanakan daripada harus membiasakan diri dengan dataset yang berbeda. Dataset berlian terdiri dari harga dan kualitas informasi tentang 54.000 berlian, dan termasuk dalam paket ggplot2. Data tersebut berisi empat C, quality, carat, cut, colour and clarity; dan lima pengukuran fisik, kedalaman, meja, x, y dan z.
Dataset belum dibersihkan dengan baik, sehingga menunjukkan hubungan yang menarik tentang berlian, itu juga menunjukkan beberapa masalah kualitas data. Kami juga akan menggunakan dataset lain, dsmall, yang merupakan sampel acak dari 100 berlian. Kami akan menggunakan data ini untuk plot yang lebih tepat untuk dataset yang lebih kecil. > Set.seed (1410) # Membuat sampel direproduksi 2.3 Dasar yang digunakan kecil <- berlian [sampel (nrow (diamond), 100),]
2 Penggunaan dasar
Seperti plot, pertama dua argumen untuk qplot () adalah x dan y, memberikan x dan y-koordinat untuk benda-benda di plot. Ada juga argumen data opsional. Jika ini ditentukan, ggplot () akan melihat ke dalam frame data sebelum mencari benda-benda di ruang kerja Anda. Menggunakan argumen Data dianjurkan: itu ide yang baik untuk menyimpan data terkait dalam bingkai data tunggal. Jika Anda tidak menentukan satu, qplot () akan mencoba untuk membangun satu untuk Anda dan mungkin terlihat di tempat yang salah. Berikut ini adalah contoh sederhana dari penggunaan qplot (). Ini menghasilkan sebar yang menunjukkan hubungan antara harga dan karat (berat) dari berlian. > qplot(carat, price, data = diamonds)

Plot menunjukkan korelasi yang kuat dengan outlier terkenal dan beberapa pergoresan vertikal yang menarik. Hubungan terlihat eksponensial, meskipun, jadi hal pertama yang kita ingin lakukan adalah untuk mengubah variabel. Karena ggplot () menerima fungsi variabel sebagai argumen, kita plot log (harga) vs log (karat): > qplot(log(carat), log(price), data = diamonds)
Hubungan sekarang terlihat linear. Dengan banyak overplotting ini, meskipun, kita perlu berhati-hati tentang menarik kesimpulan tegas. Argumen juga bisa kombinasi variabel yang ada, sehingga, jika kita ingin tahu tentang hubungan antara volume berlian (didekati dengan x × y × z) dan berat, kita bisa melakukan hal berikut: > qplot(carat, x * y * z, data = diamonds)
Kami harapkan kepadatan (berat / volume) berlian konstan, dan melihat hubungan linear antara volume dan berat. Mayoritas berlian tampaknya jatuh di sepanjang garis, tetapi ada beberapa outlier besar.
3 Adding a Smoother to a Plot
Jika anda memiliki sebar dengan poin banyak data, akan sulit untuk melihat secara tepat apa tren yang ditunjukkan oleh data. Dalam hal ini anda mungkin ini menambahkan merapikan line untuk plot. Hal ini mudah dilakukan dengan menggunakan GEOM halus seperti yang ditunjukkan pada Gambar 2.4. Perhatikan bahwa kami telah menggabungkan beberapa GEOMs dengan menyediakan nama vektor GEOM di buat dengan c (). The GEOM akan di lapis, di urutkan dimana mereka muncul. qplot(karat, harga, data = d kecil, GEOM = c (“titik”, “halus”)). qplot(karat, harga, data = berlian, GEOM = c (“titik”, “halus”)). Meskipun overplotting, kesan kita dari hubungan eksponensial antara harga dan karat. Ada beberapa berlian lebih besar dari tiga karat, dan ketidakpastian kami dalam bentuk hubungan meningkat seperti yang di gambarkan oleh interval confidence titik bijak yang di tampilkan dalam warna abu-abu. Jika anda ingin mengubah confidence interval, menggunakan se = FALSE. Ada banyak Smoother yang berbeda yang kamu dapat pilih dengan menggunakan Metode Argument :
Metode = “Loess”, Default untuk n kecil, gunakan regresi smooth lokal. Detail lebih tentang algoritma yang di gunakan dapat di temukan di Loess. Kegoyangan pada garis di atur oleh rentang parameter, yang jaraknya dari 0 (melebihi goyangan) to 1 ( tidak bergoyang). qplot(karat, harga, data = d kecil, geom = c(“titik”, “kehalusan”), rentang = 0.2). qplot(karat, harga, data = d kecil, geom = c(“titik”, “kehalusan”), rentang = 1).
Loess tidak bekerja dengan baik pada dataset besar (yang 0(n^2) di dalam memory), dan juga sebuah alternatif algoritma penghalusan yang di gunakan ketika n lebih besar dari 1000. Kamu bisa juga mengisi mgcv library dan menggunakan metode = “gam”, formula = y ~ s(x) untuk mengisi generalisasi model additif. Ini sangat sama untuk menggunakan sebuah spline dengan lm, tetapi derajat kehalusannya ternilai dari data. Pada data besar, gunakan formula y ~ s(x, bs = “cs”). Ini di gunakan dengan default ketika ada lebih dari 1000 poin.
library(mgcv) qplot(karat, harga, data = d kecil, geom = c(“titik”, “kehalusan”), metode = “gam”, formula = y ~ s(x)) qplot(karat, harga, data = d kecil, geom = c(“titik”, “kehalusan”), metode = “gam”, formula = y ~ s(x, bs = “cs”)) Metod = “rlm” berkerja seperti lm, tetapi menggunakan sebuah degup untuk mencocokan algoritma jadi garis luarnya tidak terkena seperti isinya. Ini adalah bagian dari paket Massa, jadi ingat untuk mengisi dahulu.
4 Histogram and Density Plots
Histogram and Density Plots menunjukkan distribusi variabel tunggal. Mereka memberikan informasi lebih lanjut tentang distribusi satu kelompok dari boxplots lakukan, tapi lebih sulit untuk membandingkan banyak kelompok (meskipun kita akan melihat salah satu cara untuk melakukannya). Gambar 2.10 menunjukkan distribusi karat dengan histogram dan plot kepadatan.
qplot (karat, data = berlian, GEOM = "histogram") qplot (karat, data = berlian, GEOM = "density")
Untuk plot kepadatan, menyesuaikan argumen mengontrol derajat kehalusan (nilai tinggi menyesuaikan menghasilkan plot halus). Untuk histogram, argumen binwidth mengontrol jumlah smoothing dengan menetapkan ukuran bin. (Break poin juga dapat ditentukan secara eksplisit, menggunakan argumen istirahat.) Hal ini sangat penting untuk bereksperimen dengan tingkat smoothing. Dengan histogram Anda harus mencoba banyak lebar bin: Anda mungkin menemukan bahwa fitur bruto data muncul baik di lebar bin besar, sementara fitur halus memerlukan lebar sangat sempit. Pada Gambar 2.11, kita bereksperimen dengan tiga nilai dari binwidth: 1,0, 0,1 dan 0,01. Hanya dalam plot dengan lebar bin terkecil (kanan) bahwa kita melihat striations kami mencatat dalam sebar sebelumnya, yang paling "bagus" nomor dari karat. Kode lengkap adalah:

qplot(carat, data = diamonds, geom = "histogram", binwidth = 1, xlim = c(0,3)) qplot(carat, data = diamonds, geom = "histogram", binwidth = 0.1, xlim = c(0,3)) qplot(carat, data = diamonds, geom = "histogram", binwidth = 0.01, xlim = c(0,3))
Untuk membandingkan distribusi subkelompok yang berbeda, hanya menambahkan pemetaan estetika, seperti dalam kode berikut. ggplot (karat, data = berlian, GEOM = "kepadatan", warna = warna) ggplot (karat, data = berlian, GEOM = "histogram", isi = warna) Pemetaan variabel kategoris untuk estetika akan secara otomatis berpisah GEOM oleh variabel itu, jadi perintah yang menginstruksikan qplot () untuk menggambar plot kepadatan dan histogram untuk setiap tingkat warna berlian. Hasilnya ditunjukkan pada Gambar 2.12.
Kepadatan plot lebih menarik pada awalnya karena tampaknya mudah dibaca dan membandingkan berbagai kurva. Namun, lebih sulit untuk memahami apa plot densitas menunjukkan. Selain itu, plot kepadatan membuat beberapa asumsi yang mungkin tidak benar untuk data kami; yaitu, bahwa itu adalah tak terbatas, terus menerus dan halus.
5 Time series with line and path plots
Line dan jalur plot biasanya digunakan untuk data time series. Plot garis bergabung poin dari kiri ke kanan, sementara plot jalan bergabung dengan mereka dalam urutan bahwa mereka muncul di dataset (plot garis hanya plot jalur data diurutkan berdasarkan nilai x). Plot garis biasanya memiliki waktu pada sumbu x, menunjukkan bagaimana satu variabel telah berubah dari waktu ke waktu. Jalur plot menunjukkan bagaimana dua variabel memiliki secara bersamaan halus.

berubah dari waktu ke waktu, dengan waktu dikodekan dengan cara yang poin bergabung bersama. Karena tidak ada variabel waktu dalam data berlian, kita menggunakan dataset ekonomi, yang berisi data ekonomi di AS yang diukur selama 40 tahun terakhir. Gambar 2.14 menunjukkan dua plot pengangguran dari waktu ke waktu, baik yang dihasilkan menggunakan GEOM = "line". Pertama menunjukkan tingkat pengangguran dan kedua menunjukkan jumlah rata-rata pengangguran minggu. Kita sudah bisa melihat beberapa perbedaan dalam dua variabel ini, khususnya di puncak terakhir, di mana persentase pengangguran lebih rendah dari itu di puncak sebelumnya, tapi panjang pengangguran tinggi.
qplot(date, unemploy / pop, data = economics, geom = "line") qplot(date, uempmed, data = economics, geom = "line")
Untuk menguji hubungan ini secara lebih detail, kita ingin menarik kedua seri waktu pada plot yang sama. Kita bisa menggambar sebar dari tingkat pengangguran vs panjang pengangguran, tapi kemudian kita tidak bisa lagi melihat evolusi dari waktu ke waktu. Solusinya adalah dengan bergabung titik yang berdekatan dalam waktu dengan segmen garis, membentuk plot jalan. Di bawah ini kita plot tingkat pengangguran vs panjang pengangguran dan bergabung dengan pengamatan individu dengan jalan. Karena banyak penyeberangan garis, arah di mana mengalir waktu tidak mudah untuk melihat di plot pertama. Dalam plot kedua, kami menerapkan estetika warna garis untuk membuatnya lebih mudah untuk melihat arah waktu.
year <- function(x) as.POSIXlt(x)$year + 1900 qplot(unemploy / pop, uempmed, data = economics, geom = c("point", "path")) qplot(unemploy / pop, uempmed, data = economics, geom = "path", colour = year(date)) + scale_area()
Kita bisa melihat bahwa persen pengangguran dan panjang pengangguran sangat berkorelasi, meskipun dalam beberapa tahun terakhir panjang pengangguran telah meningkat relatif terhadap tingkat pengangguran. Dengan data longitudinal, Anda sering ingin menampilkan beberapa time series pada setiap plot, setiap seri mewakili satu individu. Untuk melakukan hal ini dengan qplot (), Anda perlu untuk memetakan kelompok estetika untuk pengkodean variabel keanggotaan kelompok masing-masing pengamatan. Hal ini dijelaskan secara lebih mendalam pada Bagian 4.5.3.
6 Alternatif
Ini adalah beberapa pengaturan qplot yang lain untuk mengkontrol penampilan grafik. Ini semua punya efek yang sama seperti kesamaan plot mereka :
6.1 • xlim, ylim : set limit pada sumbu x dan sumbu y, setiap angka vektor panjangnya 2, contoh xlim =c(0, 20) atau ylim=c(-0.9, -0.5).
6.2 • log : sebuah vektor karakter mengindikasikan yang (jika semua) sumbu seharusnya dijadikan penunjuk. Sebagai contoh, log = “x” akan menunjuk sumbu x, log = “y” akan menunjuk keduanya.
6.3 • main : judul utama pada plot, teks yang besar ditengah ada di atas para plot. Ini dapat berupa string (contoh, main = “plot title”) atau sebuah ekspresi (contoh, main = “expression(beta[1] == 1)). Liat? Plotmath pada contoh lain pada penggunaan formula matematika.
6.4 • xlab, ylab : label pada sumbu x dan sumbu y. Sebagai judul plot ini dapat berupa karakter strin atau ekspresi matematika.
Contoh berikut menampilkan pengaturan aksi. > qplot( + karat, harga, data = dkecil, + xlab = “harga ($)”, ylab = “berat (karat)”, + main = “hubungan harga-berat” + )
> qplot( + karat, harga/karat, data = dkecil, + ylab = ekspresi(frac(harga,karat)), + xlab = “berat (karat)”, + main = “Berlian kecil”, + ) Peringatan : terhapus 35 baris yang berisi nilai yang hilang (geom_point).
> qplot(karat, harga, data = dkecil, log = “xy”)
7 Fuel economy data
Pertimbangkan dataset ekonomi bahan bakar, mpg, sampel yang diilustrasikan dalam Tabel 3.1. Ini catatan membuat, model, kelas, ukuran mesin, transmisi dan ekonomi bahan bakar untuk pilihan mobil AS pada tahun 1999 dan 2008. Ini berisi 38 model yang diperbarui setiap tahun, indikator bahwa mobil itu model populer. Model-model ini termasuk mobil populer seperti Audi A4, Honda Civic, Hyundai Sonata, Nissan Maxima, Toyota Camry dan Volkswagen Jetta. This data comes from the EPA fuel economy website, http://fueleconomy.gov.
This dataset suggests many interesting questions. How are engine size and fuel economy related? Do certain manufacturers care more about economy than others? Has fuel economy improved in the last ten years? We will try to answer the first question and in the process learn more details about how the scatterplot is created.
8 Building a scatterplot
Pertimbangkan Gambar 3.1, salah satu upaya untuk menjawab pertanyaan ini. Ini adalah sebar dari dua variabel kontinu (perpindahan mesin dan jalan raya mpg), dengan poin diwarnai oleh variabel ketiga (jumlah silinder). Dari pengalaman Anda dalam bab sebelumnya, Anda harus memiliki perasaan yang cukup baik untuk cara membuat plot ini dengan ggplot (). Tapi apa yang terjadi di bawah permukaan? Bagaimana ggplot2 menggambar plot ini? ggplot (display, hwy, data = mpg, warna = faktor (cyl))
9 Mapping aesthetics to data
Apa tepatnya adalah sebar sebuah? Anda telah melihat banyak sebelum dan bahkan mungkin ditarik beberapa dengan tangan. Sebuah sebar mewakili setiap pengamatan sebagai titik (•), diposisikan sesuai dengan nilai dua variabel. Serta posisi horizontal dan vertikal, setiap titik juga memiliki ukuran, warna dan bentuk. Atribut ini disebut estetika, dan sifat-sifat yang dapat dirasakan pada grafik. Setiap estetika dapat dipetakan ke variabel, atau set ke nilai konstan. Pada Gambar 3.1 tampilan dipetakan ke posisi horizontal, hwy ke posisi vertikal dan cyl warna. Ukuran dan bentuk yang tidak dipetakan ke variabel, tetapi tetap pada (konstan) nilai standar. Setelah kita memiliki pemetaan ini kita dapat membuat dataset baru yang mencatat informasi ini. Tabel 3.2 menunjukkan pertama 10 baris data di balik Gambar 3.1. Dataset baru ini adalah hasil dari penerapan pemetaan estetika untuk data asli. Kami dapat membuat berbagai jenis plot menggunakan data ini. Sebar menggunakan poin, tetapi kami bukan untuk menggambar garis kita akan mendapatkan plot line. Jika kita menggunakan bar, kita akan mendapatkan sebuah bar petak. Tak satu pun dari contoh-contoh masuk akal untuk data ini, tapi kita masih bisa menarik mereka, seperti pada Gambar 3.2. Dalam ggplot2 kita dapat menghasilkan banyak plot yang tidak masuk akal, namun yang gramatikal valid. Ini tidak berbeda dari bahasa Inggris, di mana kita dapat membuat tidak masuk akal tapi gramatikal kalimat seperti batu marah menyalak seperti koma.

Titik, garis dan bar merupakan contoh objek geometris, atau GEOS. Geom menentukan "jenis" dari plot. Plot yang menggunakan GEOM tunggal sering diberi nama khusus, beberapa yang tercantum dalam Tabel 3.3. Plot yang lebih kompleks dengan kombinasi dari beberapa geoms tidak memiliki nama khusus, dan kita harus menggambarkan mereka dengan tangan. Sebagai contoh, Gambar 3.3 overlay per kelompok garis regresi pada plot yang ada. Apa yang Anda sebut plot ini? Setelah Anda menguasai tata bahasa, Anda akan menemukan bahwa banyak dari plot yang menghasilkan secara unik disesuaikan untuk masalah Anda dan tidak akan lagi memiliki nama khusus.
10 Scaling
Nilai-nilai dalam Tabel (4.14) tidak memiliki arti untuk komputer. Kita perlu mengkonversi mereka dari unit data (misalnya, liter, mil per galon dan jumlah silinder) ke unit fisik (misalnya, piksel dan warna) bahwa komputer dapat menampilkan. Proses konversi ini disebut scaling dan dilakukan oleh skala. Sekarang ini nilai-nilai yang berarti bagi komputer, mereka mungkin tidak berarti bagi kita: warna diwakili oleh enam huruf tali heksadesimal, ukuran dengan nomor dan bentuk dengan integer. Ini kation spesifik estetika yang bermakna R dijelaskan dalam Lampiran B. Dalam contoh ini, kami memiliki tiga estetika yang perlu ditingkatkan: Posisi horisontal (x), posisi vertikal (y) dan warna. Posisi Scaling mudah dalam hal ini Misalnya karena kita menggunakan Skala linear default. Kita hanya perlu linear pemetaan dari berbagai data untuk [0; 1]. Kami menggunakan [0; 1] bukannya tepat piksel karena sistem gambar yang ggplot2 penggunaan, grid, mengurus yang konversi nal bagi kita. Langkah nal menentukan bagaimana dua posisi (x dan y) digabungkan untuk membentuk lokasi nal pada plot. Hal ini dilakukan oleh sistem, atau coord berkoordinasi. Dalam kebanyakan kasus ini akan menjadi koordinat Cartesian, tapi mungkin koordinat polar, atau proyeksi bola yang digunakan untuk peta. Proses pemetaan warna yang sedikit lebih rumit, seperti yang telah kita hasil non-numerik: warna. Namun, warna dapat dianggap sebagai memiliki tiga komponen, sesuai dengan tiga jenis sel-warna mendeteksi di mata manusia. Ketiga jenis sel menimbulkan warna tiga dimensi ruang. Scaling kemudian melibatkan pemetaan nilai data ke titik dalam ruang ini. Ada banyak cara untuk melakukan ini, tapi di sini karena cyl adalah variabel kategoris kami nilai peta untuk merata spasi warna pada roda warna, seperti yang ditunjukkan pada Gambar (4.15). Sebuah perbedaan pemetaan digunakan ketika variabel berkelanjutan. Hasil konversi ini adalah Tabel (4.14), yang berisi nilai-nilai yang memiliki makna ke komputer. Serta estetika yang telah dipetakan variabel, kami juga mencakup estetika yang konstan. Kita perlu ini sehingga estetika untuk setiap titik yang benar-benar spesifik ed dan R dapat menarik plot.
Data sederhana dengan variabel dipetakan ke ruang angkasa estetika . deskripsi warna adalah menakutkan , tapi ini adalah bentuk yang menggunakan R internal . nilai default lingkaran poin akan diisi (bentuk 19 di R) dengan : untuk estetika lainnya diisi di diameter 1 mm .
Sebuah roda warna yang menggambarkan pilihan ve warna sama spasi . ini adalah skala default untuk variabel diskrit . Akhirnya , kita perlu membuat data ini untuk membuat objek grafis yang ditampilkan di layar . Untuk membuat plot yang lengkap kita perlu mengkombinasikan objek grafis dari tiga sumber : data , yang diwakili oleh titik GEOM ; timbangan dan sistem koordinat , yang menghasilkan kapak dan legenda sehingga kita dapat membaca nilai dari grafik ; dan penjelasan plot, seperti latar belakang dan judul petak . Gambar (4.16) memisahkan kontribusi data dari kontribusi dari timbangan dan penjelasan alur .
Kontribusi dari Skala , sumbu dan legenda dan grid baris , dan background petak . Kontribusi dari data , titik GEOM , telah dihapus .
11 Sebuah Plot yang Lebih Kompleks
Plot ini menambahkan tiga komponen baru untuk campuran : aspek , beberapa lapisan dan statistik . Aspek dan lapisan memperluas struktur data yang dijelaskan di atas : setiap panel aspek di setiap lapisan memiliki sendiri dataset . Anda dapat menganggap ini sebagai array 3d : panel dari segi membentuk Jaringan 2d , dan lapisan memperpanjang ke atas dalam 3 dimensi . Dalam hal ini Data di lapisan adalah sama , namun secara umum kita bisa plot di dataset erent pada di lapisan berbeda-beda. Tabel 3.5 menunjukkan beberapa baris pertama dari data di setiap aspek . qplot ( Displ , hwy , data = mpg , aspek = . ~ tahun ) + geom_smooth ( ) Sebuah plot yang lebih kompleks dengan aspek dan beberapa lapisan . Lapisan halus berbeda-beda untuk lapisan titik karena tidak menampilkan data mentah, melainkan menampilkan transformasi statistik data. Lapisan halus ts garis halus melalui tengah data. Hal ini memerlukan langkah tambahan dalam proses yang dijelaskan di atas: setelah pemetaan data untuk estetika, data akan diteruskan ke transformasi statistik, atau stat, yang memanipulasi data dalam beberapa cara yang bermanfaat. Dalam contoh ini, statts data ke loess halus, dan kemudian kembali prediksi dari merata poin spasi dalam kisaran data. Statistik berguna lainnya termasuk 1 dan Binning 2d, kelompok berarti, regresi kuantil dan contouring. Serta menambahkan langkah tambahan untuk meringkas data, kita juga perlu beberapa langkah tambahan ketika kita sampai ke timbangan. Ini karena kita sekarang memiliki beberapa dataset (untuk aspek berbeda-beda dan lapisan) dan kita perlu membuat memastikan bahwa skala adalah sama di semua dari mereka. Scaling benar-benar terjadi dalam tiga bagian: transformasi, pelatihan dan pemetaan. Kami belum disebutkan transformasi sebelumnya, tetapi Anda mungkin telah melihat itu sebelumnya di plot log-log. Dalam log-log plot, nilai-nilai data tidak linear dipetakan ke posisi di plot, tetapi pertama log-berubah.
Transformasi skala terjadi sebelum transformasi statistik sehingga statistik yang yang tics dihitung pada data skala - berubah . Hal ini memastikan bahwa plot log ( x ) vs log ( y ) dalam skala linear tampak sama dengan x vs y pada skala log . Ada banyak transformasi berbeda-beda yang dapat digunakan , termasuk taking persegi akar , logaritma dan reciprocals . Setelah statistik dihitung , masing-masing skala dilatih pada setiap dataset dari semua lapisan dan aspek . Operasi pelatihan menggabungkan rentang dari dataset individu untuk mendapatkan berbagai data yang lengkap . Tanpa langkah ini , Skala hanya bisa masuk akal secara lokal dan kami tidak akan mampu overlay lapisan berbeda-beda karena posisi mereka tidak akan berbaris Terkadang kita ingin bervariasi skala posisi di sisi ( tetapi tidak pernah di lapisan ). Akhirnya timbangan memetakan nilai data ke dalam nilai-nilai estetika . Ini adalah sebuah operasi lokal : variabel dalam setiap dataset dipetakan ke estetika mereka nilai menghasilkan dataset baru yang kemudian dapat diberikan oleh geoms .
12 Komponen dari Tata Bahasa Berlapis
Dalam contoh di atas , kita telah melihat beberapa komponen yang membentuk plot , data dan pemetaan estetika , objek geometris (geoms) , statistik transformasi (statistik) , skala dan faceting . Kami juga telah menyentuh pada sistem koordinasi. Satu hal yang kita tidak menyebutkan adalah penyesuaian posisi , yang berkaitan dengan tumpang tindih objek grafis . Bersama-sama, data , pemetaan , stat, GEOM dan penyesuaian posisi bentuk lapisan . Sebuah plot mungkin memiliki beberapa lapisan , seperti dalam contoh di mana kita dilapis garis merapikan di sebar a. Semua bersama-sama, berlapis tata bahasa de nes plot sebagai kombinasi dari :
• Sebuah dataset default dan mengatur pemetaan dari variabel estetika .
• Satu Atau lebih lapisan , masing-masing terdiri dari objek geometris , sebuah statistik transformasi , dan penyesuaian posisi , dan opsional , dataset dan pemetaan estetika .
• Satu skala untuk setiap pemetaan estetika .
• Sebuah sistem koordinat .
• Segi spesifikasi . Bagian berikut menjelaskan masing-masing komponen tingkat yang lebih tinggi lebih tepat, dan mengarahkan Anda ke bagian-bagian dari buku di mana mereka didokumentasikan . Lapisan yang bertanggung jawab untuk menciptakan objek-objek yang kita rasakan pada plot . Lapisan A terdiri dari empat bagian :
• Data dan pemtaan estetika
• Transformasi statistik (stat)
• Objek geometris (GEOM) dan penyesuaian posisi
Deskripsi Skema dari proses generasi petak . Setiap persegi mewakili lapisan , dan skema ini merupakan plot dengan tiga lapisan dan tiga panel . Semua langkah bekerja dengan mengubah frame data individu , kecuali untuk skala pelatihan yang tidak seorang dll frame data dan beroperasi di semua dataset secara bersamaan .
13 Penskalaan 2
Skala A mengontrol pemetaan dari data atribut estetika, dan kita perlu skala untuk setiap estetika digunakan pada plot. Setiap skala beroperasi di semua Data dalam plot, memastikan pemetaan konsisten dari data ke estetika. Skala A adalah fungsi, dan kebalikannya, bersama dengan satu set parameter. Untuk Misalnya, skala warna gradien memetakan sebuah segmen garis nyata untuk jalan melalui ruang warna. Parameter dari fungsi de ne apakah path adalah linear atau melengkung, warna yang ruang untuk menggunakan (misalnya, LUV atau RGB), dan warna pada awal dan akhir. Fungsi invers digunakan untuk menggambar panduan sehingga Anda dapat membaca nilai dari grafik. Panduan yang baik sumbu (untuk skala posisi) atau legenda (untuk yang lainnya). Kebanyakan pemetaan memiliki invers yang unik (yaitu, pemetaan fungsi satu-ke-satu), tapi banyak yang tidak. Sebuah terbalik yang unik memungkinkan untuk memulihkan data asli, tapi ini tidak selalu diinginkan jika kita ingin fokus perhatian pada satu aspek
Contoh legenda dari empat skala berbeda-beda . Dari kiri ke kanan : terus menerus variabel dipetakan ke ukuran, dan warna , variabel diskrit dipetakan untuk membentuk , dan untuk warna. Pemesanan Skala tampaknya terbalik , tapi ini sesuai dengan pelabelan sumbu y : nilai kecil terjadi di bagian bawah
14 Sistem Koordinat
Sebuah sistem koordinat, atau Coord untuk jangka pendek, peta posisi benda ke bidang plot. Posisi sering tertentu ed oleh dua koordinat (x; y), tetapi potensial bisa menjadi tiga atau lebih (meskipun hal ini belum diimplementasikan diggplot2). Cartesian koordinat sistem koordinat yang paling umum sistem dua dimensi, sedangkan koordinat polar dan berbagai proyeksi peta lebih jarang digunakan. Sistem koordinat sebuah dll semua variabel posisi secara bersamaan dan di er dari Skala di bahwa mereka juga mengubah tampilan objek geometris. Misalnya, dalam koordinat polar, bar geoms terlihat seperti segmen lingkaran. Selain itu, scaling dilakukan sebelum transformasi statistik, sementara transformasi koordinat terjadi sesudahnya. Sistem koordinat mengontrol bagaimana sumbu dan garis grid ditarik.
15 Faceting 2
Ada juga hal lain yang ternyata menjadi su sien berguna yang kita harus memasukkannya dalam kerangka umum kami : faceting , kasus umum AC atau trellised plot . Hal ini membuat mudah untuk membuat kelipatan kecil masing-masing menunjukkan subset berbeda-beda dari seluruh dataset . Ini adalah alat yang ampuh ketika menyelidiki apakah pola tahan di segala kondisi . The faceting kation spesifik menjelaskan yang variabel harus digunakan untuk berpisah data , dan apakah timbangan posisi harus bebas atau dibatasi .
3.9 : Contoh sumbu dan garis grid untuk tiga sistem koordinat : Cartesian ,semi- log dan polar . Sistem koordinat polar menggambarkan kesulitan- di terkait dengan koordinat non- Cartesian : sulit untuk menarik sumbu baik
16 Struktur Data
Tata bahasa ini dikodekan ke dalam struktur data R dengan cara yang cukup mudah . Sebuah objek petak adalah daftar dengan komponen data, pemetaan ( estetika bawaan pemetaan ) , lapisan , timbangan , koordinat dan facet. Objek Plot memiliki satu komponen lain kita tidak dibahas belum : Pilihan . Ini digunakan untuk menyimpan Plot. Plot dapat dibuat dengan dua cara : sekaligus dengan qplot ( ) , seperti yang ditunjukkan pada bab sebelumnya , atau sepotong demi sepotong dengan ggplot ( ) dan fungsi lapisan , seperti dijelaskan dalam bab berikutnya . Setelah Anda memiliki objek plot, ada beberapa hal yang dapat Anda lakukan dengan itu :
• Render pada layar , dengan print () . Hal ini terjadi secara otomatis ketika berjalan secara interaktif , tapi di dalam loop atau fungsi , Anda akan perlu untuk mencetak ( ) sendiri .
• Render ke disk , dengan ggsave ( ).
• Brie y menggambarkan struktur dengan ringkasan ( ) .
• Menyimpan salinan cache itu ke disk , dengan save ( ) . Ini menghemat salinan lengkap dari objek plot, sehingga Anda dapat dengan mudah menciptakan kembali bahwa plot persis dengan beban (
). Perhatikan data yang disimpan di dalam plot , sehingga jika Anda mengubah data luar plot , dan kemudian redraw plot disimpan , tidak akan diperbarui . Kode berikut mengilustrasikan beberapa alat ini. > p <- qplot(displ, hwy, data = mpg, colour = factor(cyl)) > summary(p) data: manufacturer, model, displ, year, cyl, trans, drv, cty, hwy, fl, class [234x11] mapping: colour = factor(cyl), x = displ, y = hwy scales: colour, x, y faceting: facet_grid(. ~ ., FALSE) ———————————– geom_point: stat_identity: position_identity: (width = NULL, height = NULL) > # Save plot object to disk > save(p, file = "plot.rdata") > # Load from disk > load("plot.rdata") > # Save png to disk > ggsave("plot.png", width = 5, height = 5)
17 Seaborn Facetgrid with custom Projection
import matplotlib.pyplot as plt
sns.set() # Generate an example radial datast r = np.linspace(0, 10, num=100) df = pd.DataFrame({'r': r, 'slow': r, 'medium': 2 * r, 'fast': 4 * r}) # Convert the dataframe to long-form or "tidy" format df = pd.melt(df, id_vars=['r'], var_name='speed', value_name='theta')# Set up a grid of axes with a polar projection g = sns.FacetGrid(df, col="speed", hue="speed", subplot_kws=dict(projection='polar'), size=4.5, sharex=False, sharey=False, despine=False) # Draw a scatterplot onto each axes in the grid g.map(plt.scatter, "theta", "r")
18 Penggunaan Seaborn
Setiap estetika memiliki skala default yang ditambahkan ke plot setiap kali Anda menggunakan estetika itu. Ini tercantum dalam Tabel 6.1. Skala tergantung pada jenis variabel: kontinyu (numerik) atau diskrit (faktor, logis, karakter). Jika Anda ingin mengubah timbangan standar melihat skala set_default (), dijelaskan dalam Bagian 8.2.1. Timbangan standar ditambahkan ketika Anda menginisialisasinya plot dan ketika Anda menambahkan lapisan baru. Ini berarti ada kemungkinan untuk mendapatkan ketidaksesuaian antara jenis variabel dan jenis skala jika nanti memodifikasi data yang mendasari atau pemetaan estetika. Ketika ini terjadi, Anda perlu menambahkan skala yang benar sendiri. Contoh berikut menggambarkan masalah dan solusi.
plot <- qplot(cty, hwy, data = mpg) plot # This doesn't work because there is a mismatch between the # variable type and the default scale plot + aes(x = drv) # Correcting the default manually resolves the problem. plot + aes(x = drv) + scale_x_discrete()
Untuk menambahkan skala yang berbeda atau memodifikasi beberapa fitur dari skala default, Anda harus membangun skala baru dan kemudian menambahkannya ke plot menggunakan +. Semua konstruktor skala memiliki skema penamaan umum. Mereka mulai dengan skala _, diikuti dengan nama estetika (misalnya, warna _, shape_ atau x_), dan akhirnya dengan nama skala (misalnya, gradien, warna atau manual). Sebagai contoh, nama skala default untuk estetika warna berdasarkan data diskrit adalah hue skala warna (), dan nama dari skala warna Brewer untuk mengisi warna adalah skala mengisi bir ().
6.1: Scales, berdasarkan jenis estetika dan variabel. Timbangan standar yang berani. Skala standar bervariasi tergantung pada apakah variabel kontinu atau diskrit. Bentuk dan jenis garis tidak memiliki skala standar terus menerus; Ukuran tidak memiliki skala diskrit default. Kode berikut mengilustrasikan ini process.We mulai dengan plot yang menggunakan skala warna default, dan kemudian memodifikasi untuk menyesuaikan penampilan legenda, dan kemudian menggunakan skala warna yang berbeda. Hasilnya ditunjukkan pada Gambar 6.1.
p <- qplot(sleep_total, sleep_cycle, data = msleep,colour = vore) p # Explicitly add the default scale p + scale_colour_hue() # Adjust parameters of the default, here changing the appearance # of the legend p + scale_colour_hue("What does\nit eat?", breaks = c("herbi", "carni", "omni", NA), labels = c("plants", "meat", "both", "don't know")) # Use a different scale p + scale_colour_brewer(pal = "Set1")
Ara. 6.1: Mengatur parameter default skala. (Top kiri) Plot dengan skala default. (Top kanan) Menambahkan skala standar dengan tangan tidak mengubah tampilan plot. (Bawah kiri) Mengatur parameter skala untuk men-tweak legenda. Kanan bawah) Menggunakan skala warna yang berbeda: Set1 dari warna ColorBrewer.
19 Detail Penskalaan
Timbangan dapat diibagi secara kasar ke dalam empat kelompok terpisah:
• Skala posisi, digunakan untuk memetakan terus menerus, variabel diskrit dan tanggal-waktu ke daerah merencanakan dan membangun sumbu yang sesuai.
• Skala Warna, digunakan untuk memetakan terus menerus, variabel kontinu dan diskrit untuk warna
• Skala Manual, digunakan untuk memetakan variabel diskrit untuk pilihan anda ukuran simbol, jenis garis, bentuk atau warna, dan untuk menciptakan legenda sesuai.
• Skala identitas, digunakan untuk merencanakan nilai variabel langsung ke estetika daripada pemetaan mereka, Sebagai contoh, jika variabel yang ingin untuk memetakan simbol warna sendiri merupakan vektor warna, Anda ingin membuat nilai-nilai langsung daripada pemetaan mereka untuk beberapa warna lain. Bagian ini menjelaskan setiap kelompok secara lebih rinci. Rincian yang tepat tentang individu timbangan dapat ditemukan dalam dokumentasi, dalam R Argumen berikut yang umum untuk semua skala.:
• Nama: menetapkan label yang akan muncul pada sumbu atau legenda. Anda dapat menyediakan string teks (menggunakan \ n untuk jeda baris) atau ekspresi matematika (seperti yang dijelaskan oleh Plotmath). Karena tweaking label ini adalah suatu tugas bersama, ada tiga fungsi pembantu untuk menghemat mengetik: xlab (), ylab () dan laboratorium (). Penggunaannya ditunjukkan dalam kode di bawah ini dan hasilnya ditunjukkan pada Gambar 6.2 p <- qplot(cty, hwy, data = mpg, colour = displ) p p + scale_x_continuous("City mpg") p + xlab("City mpg") p + ylab("Highway mpg") p + labs(x = "City mpg", y = "Highway", colour = "Displacement") p + xlab(expression(frac(miles, gallon))) .
• Batas: perbaikan domain skala. Timbangan terus menerus mengambil vektor numerik panjang dua; sisik diskrit mengambil vektor karakter. Jika batas yang ditetapkan, tidak ada pelatihan data akan dilakukan. Lihat Bagian 6.4.2 untuk jalan pintas. Batas berguna untuk menghapus data yang tidak ingin ditampilkan dalam komplotan (yaitu, menetapkan batas yang lebih kecil dari berbagai data), dan untuk memastikan bahwa batas konsisten di beberapa plot dimaksudkan untuk dibandingkan (yaitu, menetapkan batas yang lebih besar atau lebih kecil dari beberapa rentang default). Setiap nilai tidak dalam domain skala tersebut akan dibuang: untuk pengamatan untuk dimasukkan dalam plot, masing-masing estetika harus berada dalam domain masing-masing skala. Mengabaikan ini terjadi sebelum statistik dihitung.
Ara. 6.2: Sebuah demonstrasi gelar berbagai bentuk legenda dapat mengambil.
• Istirahat dan label: istirahat kontrol yang nilai muncul pada sumbu atau legenda, yaitu, apa nilai-nilai tanda centang akan muncul pada sumbu atau bagaimana skala kontinyu tersegmentasi dalam legenda. label menentukan label yang akan muncul di breakpoints. Jika label diatur, Anda juga harus menentukan istirahat, sehingga kedua dapat dicocokkan dengan benar. Untuk membedakan istirahat dari batas, ingat bahwa istirahat mempengaruhi apa yang muncul pada sumbu dan legenda, sementara batas mempengaruhi apa yang muncul di plot. Lihat Gambar 6.3 untuk ilustrasi. Kolom pertama menggunakan pengaturan default untuk kedua istirahat dan batas, yang batas = c (4, 8) dan istirahat = 4: 8. Di kolom tengah, istirahat telah ulang: wilayah diplot adalah sama, tetapi posisi centang dan label telah bergeser. Di kolom kanan, itu adalah batas yang telah didefinisikan ulang, begitu banyak data sekarang berada di luar wilayah merencanakan. p <- qplot(cyl, wt, data = mtcars) p p + scale_x_continuous(breaks = c(5.5, 6.5)) p + scale_x_continuous(limits = c(5.5, 6.5)) p <- qplot(wt, cyl, data = mtcars, colour = cyl) p p + scale_colour_gradient(breaks = c(5.5, 6.5)) p + scale_colour_gradient(limits = c(5.5, 6.5))
Ara. 6.3: Perbedaan antara istirahat dan batas. (Kiri) Plot standar dengan batas = c (4, 8), istirahat = 4: 8, (tengah) istirahat = c (5.5,6.5) dan (kanan) batas = c (5.5,6.5). E? Ect pada sumbu x (atas) dan legenda warna (bawah)
• formatter: jika tidak ada label yang ditentukan formatter akan dipanggil pada setiap istirahat untuk menghasilkan label. Formatters berguna untuk skala kontinu koma, persen, dolar dan ilmiah, dan untuk skala diskrit disingkat.
20 Posisi Penskalaan
Setiap petak harus memiliki dua skala posisi, satu untuk posisi horisontal (x skala) dan satu untuk posisi vertikal (skala y). ggplot2 dilengkapi dengan terus menerus, diskrit (bagi faktor, karakter dan vektor logis) dan skala date. Masing-masing mengubah data dengan cara yang sedikit berbeda, dan menghasilkan jenis yang sedikit berbeda dari sumbu. Bagian berikut menjelaskan setiap jenis secara lebih rinci. Sebuah tugas umum untuk semua sumbu posisi berubah batas sumbu. Karena ini adalah suatu tugas bersama, ggplot2 menyediakan beberapa fungsi pembantu untuk menghemat mengetik: xlim () dan ylim (). Fungsi ini memeriksa masukan mereka dan kemudian membuat skala yang tepat, sebagai berikut:
• xlim(10, 20): a continuous scale from 10 to 20
• ylim(20, 10): a reversed continuous scale from 20 to 10
• xlim("a", "b", "c"): a discrete scale
• xlim(as.Date(c("2008-05-01", "2008-08-01"))): a date scale from May 1 to August 1 2008. Batasan ini tidak bekerja dengan cara yang sama seperti xlim dan ylim di dasar atau kisi grafis. Dalam ggplot2, untuk konsisten dengan skala lainnya, data di luar batas tidak diplot dan tidak termasuk dalam transformasi statistik. Ini berarti bahwa pengaturan batas adalah tidak sama dengan visual zoom ke wilayah plot. Untuk melakukan itu, Anda perlu menggunakan xlim dan ylim argumen untuk coord_cartesian (), dijelaskan dalam Bagian 7.3.3. Ini melakukan zooming murni visual dan tidak mempengaruhi data yang mendasarinya. Secara default, batas timbangan posisi memperpanjang sedikit melewati berbagai data. Hal ini memastikan bahwa data tidak tumpang tindih sumbu. Anda dapat mengontrol jumlah ekspansi dengan memperluas argumen. Parameter ini harus menjadi vektor numerik panjang dua. Elemen pertama memberikan ekspansi perkalian, dan perluasan aditif kedua. Jika Anda tidak ingin ada ruang ekstra, gunakan memperluas = c (0, 0).
21 Lanjutan
Skala posisi terus menerus paling umum adalah skala x terus menerus dan skala y terus menerus, yang memetakan data ke sumbu x dan y. Variasi yang paling menarik yang diproduksi menggunakan transformasi. Setiap skala kontinyu membutuhkan argumen trans, yang memungkinkan spesifikasi berbagai transformasi, baik linear dan non-linear. Transformasi yang dilakukan oleh \ transformator, "yang menggambarkan transformasi, kebalikannya, dan cara menggambar label. Tabel 6.2 daftar beberapa transformator lebih umum.
Tabel 6.2: Daftar built-in transformator. Transformasi yang paling sering digunakan untuk memodifikasi skala posisi, jadi ada jalan pintas untuk x, y dan z skala: scale_x_log10 () adalah setara dengan scale_x_continuous (trans = "log10"). Argumen trans bekerja untuk setiap skala kontinyu, termasuk gradien warna dijelaskan di bawah, tetapi cara pintas hanya ada untuk skala posisi. Tentu saja, Anda juga dapat melakukan transformasi diri. Misalnya, alih-alih menggunakan scale_x_log (), Anda bisa merencanakan log10 (x). Yang menghasilkan hasil yang sama di dalam wilayah merencanakan, tapi sumbu dan centang label tidak akan sama. Jika Anda menggunakan skala berubah, sumbu akan diberi label dalam ruang data asli. Dalam kedua kasus, transformasi terjadi sebelum ringkasan statistik. Gambar 6.4 mengilustrasikan perbedaan ini dengan kode berikut.
qplot(log10(carat), log10(price), data = diamonds) qplot(carat, price, data = diamonds) + scale_x_log10() + scale_y_log10()
Ara. 6.4: Sebuah sebar harga berlian vs karat menggambarkan perbedaan antara log mengubah skala (kiri) dan log mengubah data (kanan). Plot identik, namun label sumbu yang berbeda. Transformers juga digunakan dalam coord_trans (), di mana transformasi terjadi setelah statistik telah dihitung, dan mempengaruhi bentuk dari objek grafis yang digambar di plot. coord_trans () dijelaskan secara lebih rinci dalam Bagian 7.3.3.
22 Tanggal dan Waktu
Tanggal dan waktu pada dasarnya nilai-nilai terus menerus, tetapi dengan cara-cara khusus label sumbu. Saat ini, hanya tanggal tanggal kelas dan waktu kelas POSIXct didukung. Jika tanggal Anda dalam format yang berbeda Anda akan perlu untuk mengkonversi mereka dengan as.Date () atau as.POSIXct (). Ada tiga argumen yang mengendalikan penampilan dan lokasi kutu untuk tanggal sumbu: besar, kecil dan format. Umumnya, skala melakukan pekerjaan yang cukup baik untuk memilih default, tetapi jika Anda perlu untuk men-tweak mereka dengan rincian sebagai berikut:
• Argumen mayor dan minor menentukan posisi istirahat besar dan kecil dalam hal unit tanggal, tahun, bulan, minggu, hari, jam, menit dan detik, dan dapat dikombinasikan dengan pengganda. Sebagai contoh, besar = "2 minggu" akan menempatkan tanda centang besar setiap dua minggu. Jika tidak ditentukan, skala tanggal memiliki beberapa standar yang wajar untuk memilih mereka secara otomatis.
• Format argumen menentukan bagaimana label tick harus diformat. Tabel 6.3 berisi daftar karakter khusus yang digunakan untuk menampilkan komponen dari tanggal. Sebagai contoh, jika Anda ingin menampilkan tanggal dari bentuk 14/10/1979, Anda akan menggunakan string "% d /% m /% y"
• Tabel 6.3: Data Umum format kode, diadaptasi dari dokumentasi strftime. Terdaftar dari terpendek durasi terpanjang. Kode di bawah menghasilkan plot pada Gambar 6.5, yang menggambarkan beberapa parameter ini.
plot <- qplot(date, psavert, data = economics, geom = "line") + ylab("Personal savings rate") + geom_hline(xintercept = 0, colour = "grey50") plot plot + scale_x_date(major = "10 years") plot + scale_x_date( limits = as.Date(c("2004-01-01", "2005-01-01")), format = "%Y-%m-%d" )
Bab 5 Penutup
Demikianlah buku yang kami buat ini, semoga bermanfaat dan menambah pengetahuan para pembaca. Kami mohon maaf apabila ada kesalahan ejaan dalam penulisan kata dan kalimat Karena kami adalah manusia biasa yang tak luput dari kesalahan. Sekian penutup dari kami semoga dapat diterima dihati dan kami ucapkan terima kasih yang sebesar-besarnya.
Referensi
Hadley Wickham. A layered grammar of graphics. Journal of Computational and Graphical Statistics, 2009. In press.
Hadley Wickham. Practical tools for exploring data and models. PhD thesis, Iowa State University, 2008. URL http://had.co.nz/thesis.
Hadley Wickham, Michael Lawrence, Duncan Temple Lang, and Deborah F Swayne. An introduction to rggobi. R-news, 8(2):3–7, October 2008. URL http://CRAN.R-project.org/doc/Rnews/Rnews_2008-2.pdf.
Leland Wilkinson. The Grammar of Graphics. Statistics and Computing. Springer, 2nd edition, 2005.
Achim Zeileis, Kurt Hornik, and Paul Murrell. Escaping RGBland: Selecting colors for statistical graphics. Computational Statistics & Data Analysis, 2008. URL http://statmath.wu-wien.ac.at/~zeileis/papers/ Zeileis+Hornik+Murrell-2008.pdf. Forthcoming.
Smith, David. "Create beautiful statistical graphics with ggplot2". Revolutions. Revolution Analytics. Retrieved 11 July 2011
https://github.com/yhat/ggplot/ (yhat. Retrieved 12 October 2014)
http://stanford.edu/~mwaskom/software/seaborn/index.html
http://stanford.edu/~mwaskom/software/seaborn/tutorial.html http://docs.ggplot2.org/current/
http://ggplot2.org