Avoid clipping of points along axis in ggplot
Я строю временной ряд со средними значениями переменной отклика в виде точек (ось Y) по месяцам (ось X).
Значения, лежащие на оси x (то есть 0 значений), обрезаются. Я могу изменить пределы оси Y, чтобы добавить отступы ниже 0, но я предпочитаю этого не делать.
Есть ли способ построить эти 0 точек перед или по оси X?
4 ответа
Попробуй это,
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)
С выпуском 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')")
Если вы используете один из менее часто используемых coord_*
системы или функции (например, coord_polar
или же coord_flip
), то вы можете использовать clip = 'off'
аргумент там тоже.
my_plot +
coord_flip(clip = 'off')
Вы можете использовать атрибут expand() для scale_y
Пример для 10% каждой стороны шкалы y:
ggplot(mydata, aes(y = value, x = mydate)) +
geom_point() +
scale_y_continuous(expand = c(0.1,0.1))
Если бы вы использовали базовую графику, вы могли бы использовать clip().
plot(1:4)
clip(-0.5, 4.1, -0.5, 4.1)
points(0.85, 1, col = 'red', cex = 2)