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.

Jonas Stein
sumber

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.

A5C1D2H2I1M1N2O1R2T1
sumber
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.

stevec
sumber
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.

Shixiang Wang
sumber
Ini hanya mengubah padding di sekitar titik data, tetapi tidak membantu menyetel sumbu ke nol atau nilai lain yang diinginkan.
Melkor.cz