有没有办法让plot
函数自动生成相等的xlim
和ylim
?
我不想事先定义一个修复范围,但我希望plot
函数来决定范围本身。但是,我希望它能为x和y选择相同的范围。
答案 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]中,然后执行任何事后的最终目标。 您还可以根据数据集名称等添加标题等,这可能最终会从循环中产生更清晰的可视化。 希望这可以满足您的需求。