如何在ggplot中控制轴线的长度?

时间:2015-11-13 18:37:09

标签: r plot ggplot2

这个问题不是关于控制轴限制(我认为),而是关于控制轴线本身的长度。我试图制作一个ggplot(以便我可以利用其漂亮的刻面功能),这类似于手动添加轴的基础R图。这些轴仅延伸到最后一个轴标签。

我尝试模仿的一些设置数据和基本R类型的绘图:

library("ggplot2")
library("cowplot")
library("grid")

set.seed(5)
x <- rnorm(10)
y <- rnorm(10)
D <- data.frame(x, y)

plot(x, y, axes = FALSE)
axis(1)
axis(2)

Base R plot

ggplot(D, aes(x, y)) +
  geom_point()

cowplot包中对ggplot的默认更改非常接近:

enter image description here

但是我怎么能告诉ggplot只绘制直到最后一个轴标签的线,即使点位于该值之外(如在基础R图中)?

1 个答案:

答案 0 :(得分:10)

嗯,@Gregor在我做这个的时候发表了他的评论,所以这里是实施。仅出于说明的目的,带注释的轴以红色呈现,以显而易见它们与标准轴线分开添加。如果您打算制作一堆这样的图表,您还可以添加一些逻辑来以编程方式确定annotatecoord_cartesian的x和y限制。

  my_theme = list(theme_bw(),
                  theme(panel.border=element_blank(), 
                        panel.grid.major=element_blank(),
                        panel.grid.minor=element_blank()),
                  labs(y="",x=""))

  ggplot(D, aes(x,y)) +
    geom_point() +
    coord_cartesian(xlim=c(-1.4,1.4), ylim=c(-2.4,1.4)) +
    my_theme +
    annotate(x=-1.4, xend=-1.4, y=-2, yend=1, colour="red", lwd=0.75, geom="segment") +
    annotate(x=-1, xend=1, y=-2.4, yend=-2.4, colour="red", lwd=0.75, geom="segment") 

enter image description here