Saya ingin menempatkan dua plot pencar di R sehingga setiap kumpulan titik memiliki sumbu y (berbeda) (yaitu, di posisi 2 dan 4 pada gambar) tetapi titik-titik tersebut tampak ditumpangkan pada gambar yang sama.
Apakah mungkin melakukan ini dengan plot
?
Edit kode Contoh yang menunjukkan masalah
# example code for SO question
y1 <- rnorm(10, 100, 20)
y2 <- rnorm(10, 1, 1)
x <- 1:10
# in this plot y2 is plotted on what is clearly an inappropriate scale
plot(y1 ~ x, ylim = c(-1, 150))
points(y2 ~ x, pch = 2)
ggplot2
: stackoverflow.com/questions/3099219/… (mencari SO untuk[r] two y-axes
atau[r] twoord.plot
) - ada beberapa jawaban terkait lainnya, meskipun (yang mengejutkan saya karena ini adalah R FAQ) tidak ada yang identikJawaban:
pembaruan : Materi yang disalin di wiki R di http://rwiki.sciviews.org/doku.php?id=tips:graphics-base:2yaxes , tautan sekarang rusak: juga tersedia dari mesin wayback
Dua sumbu y berbeda di plot yang sama
(beberapa materi aslinya oleh Daniel Rajdl 2006/03/31 15:26)
Harap dicatat bahwa ada sangat sedikit situasi di mana penggunaan dua skala yang berbeda pada plot yang sama dapat dilakukan. Sangat mudah untuk menyesatkan pemirsa grafik. Periksa berikut dua contoh dan komentar tentang masalah ini ( example1 , example2 dari Charts Sampah ), serta artikel ini dengan Stephen Sedikit (yang menyimpulkan “Saya tentu tidak bisa menyimpulkan, sekali dan untuk semua, yang grafik dengan sumbu dual-skala tidak pernah berguna; hanya saja saya tidak dapat memikirkan situasi yang menjamin mereka sehubungan dengan solusi lain yang lebih baik. ”) Juga lihat poin # 4 dalam kartun ini ...
Jika Anda ditentukan, resep dasarnya adalah membuat plot pertama Anda, mengatur
par(new=TRUE)
untuk mencegah R dari membersihkan perangkat grafis, membuat plot kedua denganaxes=FALSE
(dan pengaturanxlab
danylab
menjadi kosong -ann=FALSE
juga harus berfungsi) dan kemudian menggunakanaxis(side=4)
untuk menambahkan sumbu baru di sisi kanan, danmtext(...,side=4)
untuk menambahkan label sumbu di sisi kanan. Berikut ini contoh penggunaan sedikit data yang dibuat-buat:twoord.plot()
dalamplotrix
paket mengotomatiskan proses ini, seperti halnyadoubleYScale()
dalamlatticeExtra
paket.Contoh lain (diadaptasi dari pos milis R oleh Robert W. Baer):
Resep serupa dapat digunakan untuk menempatkan plot dari berbagai jenis - plot batang, histogram, dll.
sumber
axis(1,pretty(range(time),10))
garis?Seperti namanya,
twoord.plot()
dalam paket plotrix dengan dua sumbu ordinat.sumber
Salah satu opsinya adalah membuat dua plot berdampingan.
ggplot2
memberikan opsi yang bagus untuk ini denganfacet_wrap()
:sumber
Jika Anda dapat melepaskan label skala / sumbu, Anda dapat mengubah skala data ke interval (0, 1). Ini berfungsi misalnya untuk jalur 'goyangan' yang berbeda pada kromosom, saat Anda secara umum tertarik pada korelasi lokal antara jalur dan mereka memiliki skala yang berbeda (cakupan dalam ribuan, Fst 0-1).
Kemudian, memiliki frame data dengan
chrom
,position
,coverage
danfst
kolom, Anda dapat melakukan sesuatu seperti:Keuntungannya adalah Anda tidak terbatas pada dua trak.
sumber
Saya juga menyarankan,
twoord.stackplot()
dalamplotrix
plot paket dengan lebih dari dua sumbu ordinat.sumber
Alternatif lain yang mirip dengan jawaban yang diterima oleh @BenBolker adalah mendefinisikan kembali koordinat plot yang ada saat menambahkan kumpulan poin kedua.
Berikut adalah contoh minimal.
Data:
Merencanakan:
sumber