gpt4 book ai didi

r - ggplot2 - 设置下限大于最低点

转载 作者:行者123 更新时间:2023-12-04 01:14:41 25 4
gpt4 key购买 nike

出于某种原因,我适合的功能 ggplot2超出 y 轴,即使可以获得的最小值为零。因此,在尝试将下限限制为零时,我注意到似乎不能只设置下限,从而忽略数据点(或显然是预测点)。这是真的?

例如,可以使用 expand_limits缩小,就像这样:

require(ggplot2)
p = ggplot(mtcars, aes(wt, mpg)) + geom_point()
p + expand_limits(y=0)

但是不能放大:
p + expand_limits(y=15)

与设置美学相同:
p + aes(ymin=0)
p + aes(ymin=15)

我知道我可以使用 ylim , coord_cartesian等来设置上限和下限,但在这种情况下,我将一个列表传递给 ggplot使用 lapply并且上限根据正在绘制的列表中的对象而变化。所以我回到单独绘制每个对象,这是非常乏味的。有任何想法吗?

编辑:哈德利确认这是不可能的,所以@Arun 的解决方法将不得不做!

最佳答案

这取决于你想如何绘制图形,但如果你可以为每个图形创建一个上限向量,你可以做这样的事情......

# Some vector of upper bounds for each plot which you can determine beforehand
ul <- c(20,25,30,35)
# Layout for printing plots (obviously you can handle this part however you like, this is just an example)
vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)

# Make some sensible number of rows/columns for plot page
x <- floor(sqrt(length(ul)))
y <- ceiling( length(ul) / x )

# Make list to hold plots
plots <- as.list( 1:length(ul) )
dim( plots ) <- c( x , y )


# Store plots with variable upper limit variable each time
for( i in plots ){
plots[[i]] <- ggplot(mtcars, aes(wt, mpg)) + geom_point() + scale_y_continuous( limits = c( 15,ul[i]) , expand = c( 0 , 0 ) )
}


# Print the plots
grid.newpage()
pushViewport(viewport(layout = grid.layout(x, y)))
for( i in 1:x){
for( j in 1:y){
print( plots[[ i , j ]] , vp = vplayout( i , j ) )
}
}

enter image description here

关于r - ggplot2 - 设置下限大于最低点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15234819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com