Избегайте отсечения точек вдоль оси в ggplot - PullRequest
6 голосов
/ 13 марта 2012

Я строю временной ряд со средними значениями переменной отклика в виде точек (ось Y) по месяцам (ось X).

Значения, лежащие на оси x (то есть 0 значений), обрезаются.Я могу изменить пределы оси y, чтобы включить некоторые отступы ниже 0, но я предпочитаю этого не делать.

Есть ли способ нанести эти 0 точек на перед или над x-ось?

Ответы [ 4 ]

19 голосов
/ 14 марта 2012

Попробуйте это,

q <- qplot(1:10,1:10,size=I(10)) + scale_y_continuous(expand=c(0,0))
gt <- ggplot_gtable(ggplot_build(q))
gt$layout$clip[gt$layout$name=="panel"] <- "off"
grid.draw(gt)

clipoff

6 голосов
/ 13 июля 2018

С выпуском ggplot2 версии 3.0.0 вы можете просто использовать coord_cartesian(clip = 'off').

library(ggplot2)

qplot(x = 1:10, y = 1:10, size=I(10)) + 
  scale_y_continuous(expand=c(0,0)) +
  coord_cartesian(clip = 'off') +
  labs(title = "coord_cartesian(clip = 'off')")

enter image description here

Если вы используете одну из менее часто используемых coord_* систем или функций (например, coord_polar или coord_flip), то вы также можете использовать аргумент clip = 'off'.

my_plot + 
coord_flip(clip = 'off')
2 голосов
/ 13 марта 2012

Вы можете использовать атрибут expand () в scale_y
Пример 10% с каждой стороны шкалы y:

ggplot(mydata, aes(y = value, x = mydate)) +
  geom_point() +
  scale_y_continuous(expand = c(0.1,0.1))
0 голосов
/ 14 марта 2012

Если вы используете базовую графику, вы можете использовать clip ().

plot(1:4)
clip(-0.5, 4.1, -0.5, 4.1)
points(0.85, 1, col = 'red', cex = 2)
...