避免在ggplot中沿轴剪切点

时间:2012-03-13 19:23:38

标签: r ggplot2 clipping

我正在绘制一个时间序列,其响应变量的平均值为月(x轴)的点(y轴)。

剪裁位于x轴上的值(即0值)。我可以改变y轴的限制以包括一些低于0的填充,但我不愿意。

有没有办法在x轴前面或顶部绘制这些0点?

4 个答案:

答案 0 :(得分:19)

试试这个,

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

答案 1 :(得分:6)

随着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_polarcoord_flip),则可以在此处使用clip = 'off'参数也是如此。

my_plot + 
coord_flip(clip = 'off')

答案 2 :(得分:2)

您可以在比例上使用属性expand() y标度每侧10%的例子:

ggplot(mydata, aes(y = value, x = mydate)) +
  geom_point() +
  scale_y_continuous(expand = c(0.1,0.1))

答案 3 :(得分:-1)

如果您使用的是基本图形,则可以使用clip()。

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