在绘图函数中设置相等的xlim和ylim

时间:2015-05-21 02:35:03

标签: r plot

有没有办法让plot函数自动生成相等的xlimylim? 我不想事先定义一个修复范围,但我希望plot函数来决定范围本身。但是,我希望它能为x和y选择相同的范围。

3 个答案:

答案 0 :(得分:3)

一种可能的解决方案是为绘图函数定义一个包装器:

plot.Custom <- function(x, y, ...) {
  .limits <- range(x, y)
  plot(x, y, xlim = .limits, ylim = .limits, ...)
}

答案 1 :(得分:2)

一种方法是以交互方式操作,然后选择正确的方法。运行以下代码后,将出现一个滑块。

library(manipulate)
manipulate(
    plot(cars, xlim=c(x.min,x.max)),
    x.min=slider(0,15),
    x.max=slider(15,30))

答案 2 :(得分:1)

我不知道无论如何使用情节来做这件事(并不意味着没有一个)。 ggplot可能是要走的路;由于它是围绕一个图层系统设计的,因此它更适合追溯更改。

library(ggplot2)

#Creating our ggplot object
loop_plot <- ggplot(cars, aes(x = speed, y = dist)) +
    geom_point()

#pulling out the 'auto' x & y axis limits
rangepull <- t(cbind(
        ggplot_build(loop_plot)$panel$ranges[[1]]$x.range,
        ggplot_build(loop_plot)$panel$ranges[[1]]$y.range))

#taking the max and min(so we don't cut out data points)
newrange  <- list(cor.min = min(rangepull[,1]), cor.max = max(rangepull[,2]))

#changing our plot size to be nice and symmetric
loop_plot  <- loop_plot + 
    xlim(newrange$cor.min, newrange$cor.max) + 
    ylim(newrange$cor.min, newrange$cor.max)

请注意,loop_plot对象是ggplot类,并且在调用之前不会实际打印。 我在上面的代码中使用了汽车数据集来显示正在进行的事情,但只是在数据集[s]中,然后执行任何事后的最终目标。 您还可以根据数据集名称等添加标题等,这可能最终会从循环中产生更清晰的可视化。 希望这可以满足您的需求。