ggplot için bir sınırın yalnızca alt sınırını ayarlayın


82

Sürekli ölçek için bir sınırın yalnızca alt sınırını belirlemek mümkün müdür? Üst sınır sınırını belirtmeye gerek kalmadan tüm grafikleri 0 temelli yapmak istiyorum.

Örneğin

+ scale_y_continuous(minlim=0)

Yanıtlar:


118

Kullanabilirsiniz expand_limits

ggplot(mtcars, aes(wt, mpg)) + geom_point() + expand_limits(y=0)

İşte ikisinin karşılaştırması:

  • olmadan expand_limits

  • ile expand_limits

1.0.0 sürümünden itibaren ggplot2, yalnızca bir sınır belirleyebilir ve diğerini, ikinci sınırı olarak ayarlayarak normalde belirleneceği gibi elde edebilirsiniz NA. Bu yaklaşım, eksen aralığının hem genişlemesine hem de kesilmesine izin verecektir.

ggplot(mtcars, aes(wt, mpg)) + geom_point() +
  scale_y_continuous(limits = c(0, NA))

aracılığıyla belirtmek ylim(c(0, NA))aynı şekli verir.


@PatrickT Bunu stackoverflow.com/q/27028825/892313 için bir yorum olarak mı demek istediniz ?
Brian Diggs

Tam olarak aradığım şey. Teşekkür ederim
Veera

12

Şu şekilde kullanmaya ne dersiniz aes(ymin=0):

ggplot(mtcars, aes(wt, mpg)) + geom_point() + aes(ymin=0)

7
Bu, geom_errorbar vb. İçin ymin değerini geçersiz kılar; expand_limits () daha güvenli görünüyor.
Mark

Bir gelince bu, evrensel değil geom_densitybana verir Error: stat_bin() must not be used with a y aestheticveya içinde yerleştirildiğinde geom_density, Warning: Ignoring unknown aesthetics: ymin(ikincisi varlık tamamen beklenen)
PatrickT

7

Ayrıca, minimum y eksenini sıfırda ve ayrıca x ekseni ile min y değeri arasında fazladan boşluk olmadan verecek olan aşağıdaki kodu deneyebilirsiniz.

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

1
coord_cartesian()Bunun yerine bunu yapmanın bir yolu var mı ?
Randy

-1

Bunu doğrudan yapabileceğini sanmıyorum. Ancak bir çözüm olarak, ggplot2'nin üst sınırı belirleme şeklini taklit edebilirsiniz:

scale_y_continuous(limits=c(0, max(mydata$y) * 1.1))
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.