Verileri kaldırmadan ggplot2 eksenlerini sınırlayın (sınırların dışında): yakınlaştırma


106

Ggplot'ta eksen sınırlarını belirtirseniz, dış noktalar kaldırılır. Bu noktalar için iyidir, ancak belirtilen aralıkla kesişen çizgileri çizmek isteyebilirsiniz, ancak ggplot'lar rangeveya xlim/ylimyöntemler bunları kaldırır. Dıştaki verileri kaldırmadan çizim ekseni aralığını belirlemenin başka bir yolu var mı?

Örneğin

require(ggplot2)
d = data.frame(x=c(1,4,7,2,9,7), y=c(2,5,4,10,5,3), grp=c('a','a','b','b','c','c'))
ggplot(d, aes(x, y, group=grp)) + geom_line()
ggplot(d, aes(x, y, group=grp)) + geom_line() + scale_y_continuous(limits=c(0,7))
ggplot(d, aes(x, y, group=grp)) + geom_line() + ylim(0,7)

Yanıtlar:


170

Hadley bunu 99. sayfada açıklıyor; Onun içinde 133 ggplot2 kitabında (1. Baskı) , ya s 160 -. 161 varsa ikinci baskısını .

Sorun, sizin de söylediğiniz gibi, limitsölçek veya ayarın ylim(), verileri kısıtladıkları için verilerin atılmasına neden olmasıdır. Gerçek bir yakınlaştırma için (tüm verileri saklayın), Kartezyen koordinat sistemi (veya diğer koordinat sistemleri https://ggplot2.tidyverse.org/reference/#section-coordinate-systems ) içindeki sınırları belirlemeniz gerekir . Daha fazla bilgi için: http://docs.ggplot2.org/current/coord_cartesian.html

ggplot(d, aes(x, y, group=grp)) + 
    geom_line() + 
    coord_cartesian(ylim=c(0, 7))

görüntü açıklamasını buraya girin


2
Ya coord_cartesian kullandığım için bir seçenek değilse geom_boxplot?
Everettss

3
coord_cartesianhala geom_boxplotveya diğer geoms ile bir seçenektir .
eipi10

Evet, ancak yatay kutu planlarının nasıl yapılacağını çözemiyorum çünkü bu gerekli coord_flipve iki koordinatınız olamaz.
jtr13

2
Boşver, sen bu durumda coord_flipyerine ylimleri yerleştirebilirsin coord_cartesian.
jtr13
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.