Paksa asal untuk mulai dari 0


150

Bagaimana cara mengatur asal / intersepsi sumbu y dan sumbu x di ggplot2?

Garis sumbu x harus tepat sama y=Z.

Dengan Z=0atau nilai lain yang diberikan.

Jawaban:


210

xlimdan ylimjangan potong di sini. Anda perlu menggunakan expand_limits, scale_x_continuousdan scale_y_continuous. Mencoba:

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for

masukkan deskripsi gambar di sini

p + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))

masukkan deskripsi gambar di sini

Anda mungkin perlu menyesuaikan sedikit untuk memastikan titik-titik tidak terpotong (lihat, misalnya, titik di x = 5dan y = 5.


29
Saya juga perlu menentukan batasan scale_x_continuous(expand = c(0, 0), limits = c(0,5))
:,

3
Saya pikir satu bagian lagi dapat membantu, yang menggunakan sesuatu seperti expand=expand_scale(mult=c(0,0.1))sehingga Anda masih mendapatkan bantalan di ujung atas: stackoverflow.com/a/59056123/8400969
Michael

8

Cukup tambahkan ini ke ggplot Anda:

+ scale_x_continuous(expand = c(0, 0), limits = c(0, NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

Contoh

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for


p + scale_x_continuous(expand = c(0, 0), limits = c(0,NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

masukkan deskripsi gambar di sini

Terakhir, berhati - hatilah untuk tidak secara tidak sengaja mengecualikan data dari bagan Anda . Sebagai contoh, a position = 'dodge'dapat menyebabkan sebuah batang keluar dari grafik seluruhnya (misalnya jika nilainya nol dan Anda memulai sumbu dari nol), jadi Anda mungkin tidak melihatnya dan bahkan mungkin tidak mengetahuinya di sana. Saya sarankan untuk membuat plot data secara lengkap terlebih dahulu, periksa, kemudian gunakan tip di atas untuk meningkatkan estetika plot.


apakah mungkin juga untuk membangun ini menjadi tema ggplot baru?
Bolle

@Bolle Saya tidak yakin, tetapi tertarik untuk mengetahuinya juga, Anda dapat mengajukan pertanyaan terpisah dan tautan ke sini
stevec

Tautkan di sini untuk referensi di masa mendatang
stevec

1

Di versi terbaru ggplot2, ini bisa lebih mudah.

p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
p+ geom_point() + scale_x_continuous(expand = expansion(mult = c(0, 0))) + scale_y_continuous(expand = expansion(mult = c(0, 0)))

masukkan deskripsi gambar di sini

Lihat ?expansion()untuk lebih jelasnya.


Ini hanya mengubah padding di sekitar titik data, tetapi tidak membantu menyetel sumbu ke nol atau nilai lain yang diinginkan.
Melkor.cz
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.