Saat ini saya menggunakan scale_brewer()
untuk isian dan ini terlihat indah dalam warna (di layar dan melalui printer warna) tetapi mencetak secara relatif seragam sebagai abu-abu saat menggunakan printer hitam dan putih. Saya mencari ggplot2
dokumentasi online tetapi tidak melihat apapun tentang menambahkan tekstur untuk mengisi warna. Apakah ada cara resmi ggplot2
untuk melakukan ini atau apakah ada yang memiliki peretasan yang mereka gunakan? Yang saya maksud dengan tekstur adalah hal-hal seperti batang diagonal, batang diagonal terbalik, pola titik, dll. Yang akan membedakan warna isian saat dicetak dalam hitam dan putih.
103
Jawaban:
ggplot dapat menggunakan palet colorbrewer. Beberapa di antaranya ramah "fotokopi". Jadi mabe sesuatu seperti ini akan berhasil untuk Anda?
dalam hal ini OrRd adalah palet yang ditemukan di halaman web colorbrewer: http://colorbrewer2.org/
sumber
Hai teman-teman, inilah peretasan wee yang membahas masalah tekstur dengan cara yang sangat mendasar:
ggplot2: buat garis tepi di satu batang lebih gelap dari yang lain menggunakan R
EDIT: Saya akhirnya menemukan waktu untuk memberikan contoh singkat tentang peretasan ini yang memungkinkan setidaknya 3 jenis pola dasar di ggplot2. Kode:
Menghasilkan ini:
Ini tidak super cantik tapi itu satu-satunya solusi yang bisa saya pikirkan.
Seperti yang dapat dilihat, saya menghasilkan beberapa data yang sangat mendasar. Untuk mendapatkan garis vertikal, saya cukup membuat bingkai data untuk memuat variabel yang ingin saya tambahkan garis vertikal dan menggambar ulang batas grafik beberapa kali mengurangi lebar setiap kali.
Hal serupa dilakukan untuk garis horizontal tetapi bingkai data baru diperlukan untuk setiap gambar ulang di mana saya telah mengurangi nilai (dalam contoh saya '5') dari nilai yang terkait dengan variabel yang diminati. Secara efektif menurunkan ketinggian bilah. Ini sulit untuk dicapai dan mungkin ada pendekatan yang lebih ramping tetapi ini menggambarkan bagaimana itu dapat dicapai.
Pola jala adalah kombinasi keduanya. Pertama menggambar garis vertikal dan kemudian menambahkan garis horizontal pengaturan
fill
sebagaifill='transparent'
untuk memastikan garis vertikal tidak ditarik lebih.Sampai ada pembaruan pola, saya harap beberapa dari Anda menganggap ini berguna.
EDIT 2:
Selain itu pola diagonal juga dapat ditambahkan. Saya menambahkan variabel tambahan ke bingkai data:
Kemudian saya membuat bingkai data baru untuk menampung koordinat garis diagonal:
Dari sana saya menambahkan geom_paths ke ggplot di atas dengan masing-masing memanggil koordinat berbeda dan menggambar garis di atas bilah yang diinginkan:
Hasilnya sebagai berikut:
Agak ceroboh karena saya tidak menginvestasikan terlalu banyak waktu untuk mendapatkan garis miring sempurna dan berjarak terpisah tetapi ini harus berfungsi sebagai bukti konsep.
Jelas bahwa garis dapat bersandar ke arah yang berlawanan dan ada juga ruang untuk meshing diagonal seperti meshing horizontal dan vertikal.
Saya pikir hanya itu yang bisa saya tawarkan di bagian depan pola. Semoga seseorang dapat menemukan kegunaannya.
EDIT 3: Kata-kata terakhir yang terkenal. Saya telah menemukan opsi pola lain. Kali ini menggunakan
geom_jitter
.Sekali lagi saya menambahkan Variabel lain ke bingkai data:
Dan saya memesan bagaimana saya ingin setiap pola disajikan:
Selanjutnya saya membuat kolom yang berisi nomor yang terkait dengan bilah target yang dimaksudkan pada sumbu x:
Diikuti oleh kolom untuk memuat posisi pada sumbu y dari 'gelembung':
Akhirnya saya menambahkan
geom_jitter
s ke ggplot di atas menggunakan kolom baru untuk memposisikan dan menggunakan kembali 'Poin' untuk memvariasikan ukuran 'gelembung':Setiap kali plot dijalankan, jitter memposisikan 'gelembung' secara berbeda tetapi berikut adalah salah satu output yang lebih baik yang saya miliki:
Terkadang 'gelembung' akan bergoyang di luar perbatasan. Jika ini terjadi, jalankan kembali atau cukup ekspor dalam dimensi yang lebih besar. Lebih banyak gelembung dapat diplot pada setiap kenaikan pada sumbu y yang akan mengisi lebih banyak ruang kosong jika Anda menginginkannya.
Itu membuat hingga 7 pola (jika Anda menyertakan garis miring diagonal berlawanan dan mesh diagonal keduanya) yang dapat diretas di ggplot.
Silakan menyarankan lebih banyak jika ada yang bisa memikirkan beberapa.
EDIT 4: Saya telah mengerjakan fungsi pembungkus untuk mengotomatiskan penetasan / pola di ggplot2. Saya akan memposting tautan setelah saya memperluas fungsi untuk memungkinkan pola di plot facet_grid dll. Berikut adalah output dengan input fungsi untuk plot batang sederhana sebagai contoh:
Saya akan menambahkan satu edit terakhir setelah saya memiliki fungsi yang siap untuk dibagikan.
EDIT 5: Berikut link ke fungsi EggHatch yang saya tulis untuk membuat proses penambahan pola ke plot geom_bar sedikit lebih mudah.
sumber
Saat ini tidak memungkinkan karena kisi (sistem grafik yang digunakan ggplot2 untuk melakukan gambar sebenarnya) tidak mendukung tekstur. Maaf!
sumber
Anda dapat menggunakan paket ggtextures oleh @claus wilke untuk menggambar persegi panjang dan batang bertekstur dengan
ggplot2
.Anda juga dapat menggabungkannya dengan geom lain:
sumber
Saya pikir Docconcoct berfungsi dengan baik tetapi sekarang saya tiba-tiba mencari paket khusus di Google --- Patternplot . Tidak melihat kode internal tetapi vinyet tampaknya berguna.
sumber
ggrough
mungkin menarik: https://xvrdm.github.io/ggrough/sumber
Saya baru saja menemukan sebuah paket bernama
ggpattern
( https://github.com/coolbutuseless/ggpattern ) yang tampaknya menjadi solusi yang bagus untuk masalah ini dan terintegrasi dengan baik dengan alur kerja ggplot2. Meskipun solusi yang menggunakan tekstur mungkin berfungsi dengan baik untuk batang diagonal, solusi tersebut tidak akan menghasilkan grafik vektor dan oleh karena itu tidak optimal.Berikut adalah contoh yang diambil langsung dari repositori github ggpattern:
yang menghasilkan plot ini:
Jika hanya beberapa batang yang harus diberi garis,
geom_col_pattern()
memilikipattern_alpha
argumen yang dapat digunakan untuk membuat garis yang tidak diinginkan benar-benar transparan.sumber
Mungkin berguna untuk membuat bingkai data dummy yang konturnya sesuai dengan "tekstur" dan kemudian menggunakan geom_contour. Inilah contoh saya:
Dan inilah hasilnya: plot berbayang dengan garis-garis
(garis harus dihaluskan)
sumber