Ggplot2 R grafiklerinde eksenler için sınırlar nasıl ayarlanır?


358

Aşağıdakileri çiziyorum:

library(ggplot2)    

carrots <- data.frame(length = rnorm(500000, 10000, 10000))
cukes <- data.frame(length = rnorm(50000, 10000, 20000))
carrots$veg <- 'carrot'
cukes$veg <- 'cuke'
vegLengths <- rbind(carrots, cukes)

ggplot(vegLengths, aes(length, fill = veg)) +
 geom_density(alpha = 0.2)

Şimdi diyelim ki sadece arasındaki bölgeyi x=-5000 için 5000tamamı yerine aralığının.

Bunu nasıl yapabilirim?

Yanıtlar:


585

Temel olarak iki seçeneğiniz var

scale_x_continuous(limits = c(-5000, 5000))

veya

coord_cartesian(xlim = c(-5000, 5000)) 

Birincisi verilen aralığın dışındaki tüm veri noktalarını kaldırır ve ikincisi sadece görünür alanı ayarlar. Çoğu durumda farkı görmezsiniz, ancak verilere herhangi bir şey sığarsanız, muhtemelen takılan değerleri değiştirir.

İlk seçenek gibi veri noktalarını belirtilen aralığın dışında kaldıran steno işlevini xlim(veya ylim) de kullanabilirsiniz :

+ xlim(-5000, 5000)

Daha fazla bilgi için coord_cartesian.

RStudio Pardus için ggplot2markaların oldukça görsel temizleyin bu. İşte bu hile sayfasının küçük bir bölümü:

resim açıklamasını buraya girin

CC BY altında dağıtılır .


16
şimdi de var library(scales); ... + scale_x_continuous(limits = c(-5000, 5000), oob=squish)(varsayılan değer oob=censor); bkz ?squish, ?censor: groups.google.com/forum/#!topic/ggplot2/AsJ6xpmR9tU
Ben Bolker

5
NB. tüm nesne arsadan kaldırıldığı için bazı köşelerin sınırların dışında olduğu çizgiler / çokgenlerle uğraşıyorsanız bu sorunlu olabilir
geotheory

1
@geotheory: Bu coord_cartesianyaklaşım için de geçerli mi?
Nick Stauner

1
Hayır, daha spesifik olmalıydım, sadece ilk yöntem
jeoloji,

Uygulamada, 'yazdırma' amacıyla, coord_cartesian(xlim = muhtemelen ylimde sıfırlamanız ve etiket ve ızgara sonlarını sıfırlamanız gerekir.
PatrickT

44

Kısa not: coord_flip()x ve y eksenini çevirmeyi de kullanıyorsanız , coord_cartesian()bu iki işlev özel olduğu için aralık sınırlarını ayarlayamazsınız ( buraya bakın ).

Neyse ki, bu kolay bir düzeltme; sınırlarınızı coord_flip()şu şekilde ayarlayın:

p + coord_flip(ylim = c(3,5), xlim = c(100, 400))

Bu sadece görünür aralığı değiştirir (yani veri noktalarını kaldırmaz).


Benzer ama daha zor bir soru burada gönderildi stackoverflow.com/questions/61531149/… SADECE bir
tarafı
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.