Saya mendapatkan peringatan ini saat mencoba membuat plot dengan ggplot
.
Setelah meneliti online untuk beberapa saat banyak yang menyarankan bahwa database saya berisi nilai null atau data yang hilang secara umum, yang sebenarnya tidak terjadi.
Dalam pertanyaan ini jawaban yang diterima mengatakan sebagai berikut:
Peringatan tersebut berarti bahwa beberapa elemen dihapus karena berada di luar kisaran yang ditentukan
Saya bertanya-tanya apa sebenarnya maksud kisaran ini dan bagaimana seseorang dapat secara manual meningkatkan kisaran ini untuk menghindari semua peringatan?
y
sumbu pada pertanyaan itu. Nilai dibatasi antara 0 dan 0,12 karena fungsi ini:ylim(0,0.12)
Jawaban:
Perilaku yang Anda lihat disebabkan oleh cara
ggplot2
menangani data yang berada di luar rentang sumbu plot. Anda dapat mengubah perilaku ini bergantung pada apakah Anda menggunakanscale_y_continuous
(atau, secara ekuivalen,ylim
) ataucoord_cartesian
untuk menyetel rentang sumbu, seperti yang dijelaskan di bawah ini.library(ggplot2) # All points are visible in the plot ggplot(mtcars, aes(mpg, hp)) + geom_point()
Pada kode di bawah ini, satu titik dengan hp = 335 berada di luar rentang y plot. Selain itu, karena kami biasa
scale_y_continuous
menyetel rentang sumbu y, titik ini tidak disertakan dalam statistik atau ukuran ringkasan lainnya yang dihitung oleh ggplot, seperti garis regresi linier.ggplot(mtcars, aes(mpg, hp)) + geom_point() + scale_y_continuous(limits=c(0,300)) + # Change this to limits=c(0,335) and the warning disappars geom_smooth(method="lm") Warning messages: 1: Removed 1 rows containing missing values (stat_smooth). 2: Removed 1 rows containing missing values (geom_point).
Pada kode di bawah ini, titik dengan hp = 335 masih berada di luar rentang y dari plot, tetapi titik ini tetap disertakan dalam statistik atau ukuran ringkasan yang dihitung ggplot, seperti garis regresi linier. Ini karena kami biasa
coord_cartesian
menyetel rentang sumbu y, dan fungsi ini tidak mengecualikan titik yang berada di luar rentang plot saat melakukan penghitungan lain pada data.Jika Anda membandingkan ini dan plot sebelumnya, Anda dapat melihat bahwa garis regresi linier pada plot kedua memiliki kemiringan yang sedikit lebih curam, karena titik dengan hp = 335 disertakan saat menghitung garis regresi, meskipun tidak terlihat di plot .
ggplot(mtcars, aes(mpg, hp)) + geom_point() + coord_cartesian(ylim=c(0,300)) + geom_smooth(method="lm")
sumber
Hanya demi menyelesaikan jawaban yang diberikan oleh eipi10.
Saya menghadapi masalah yang sama, tanpa menggunakan
scale_y_continuous
norcoord_cartesian
.Konflik itu berasal dari sumbu x, yang saya definisikan
limits = c(1, 30)
. Sepertinya batasan tersebut tidak memberikan ruang yang cukup jika Anda ingin "menghindari" bar Anda, jadi R tetap memberikan kesalahanMenyesuaikan batas sumbu x untuk
limits = c(0, 31)
menyelesaikan masalah.Kesimpulannya, bahkan jika Anda tidak membatasi sumbu y Anda, periksa perilaku sumbu x Anda untuk memastikan Anda memiliki cukup ruang
sumber
Bahkan jika data Anda berada dalam batas yang ditentukan (misalnya
c(0, 335)
), menambahkangeom_jitter()
pernyataan dapat mendorong beberapa poin keluar dari batas tersebut, menghasilkan pesan kesalahan yang sama.library(ggplot2) range(mtcars$hp) #> [1] 52 335 # No jitter -- no error message ggplot(mtcars, aes(mpg, hp)) + geom_point() + scale_y_continuous(limits=c(0,335)) # Jitter is too large -- this generates the error message ggplot(mtcars, aes(mpg, hp)) + geom_point() + geom_jitter(position = position_jitter(w = 0.2, h = 0.2)) + scale_y_continuous(limits=c(0,335)) #> Warning: Removed 1 rows containing missing values (geom_point).
Dibuat pada 2020-08-24 oleh paket reprex (v0.3.0)
sumber
Saya mengalami ini juga, tetapi dalam kasus di mana saya ingin menghindari pesan kesalahan tambahan sambil menjaga jarak yang disediakan. Opsi juga untuk membuat subset data sebelum menyetel rentang, sehingga rentang dapat disimpan sesuka Anda tanpa memicu peringatan.
library(ggplot2) range(mtcars$hp) #> [1] 52 335 # Setting limits with scale_y_continous (or ylim) and subsetting accordingly ## avoid warning messages about removing data ggplot(data= subset(mtcars, hp<=300 & hp >= 100), aes(mpg, hp)) + geom_point() + scale_y_continuous(limits=c(100,300))
sumber