R 如何在ggplot中动态设置aes的轴比例限制?

R 如何在ggplot中动态设置aes的轴比例限制?,r,ggplot2,R,Ggplot2,我试图用一个带阴影的矩形注释ggplot柱状图,并试图找出是否有方法将参数传递给ymax,该参数将动态地将矩形缩放到绘图区域的ymax 通过将annotate()的ymax值硬编码为大于绘图ymax,然后使用下图所示的coord_cartesian()对绘图进行“裁剪”,可以达到预期效果。然而,这需要我事先知道直方图的最大值是多少,如果我调整binwidth,它当然会改变。是否有某种方法可以动态缩放ymax ggplot( data = mtcars, aes( x=mpg

我试图用一个带阴影的矩形注释ggplot柱状图,并试图找出是否有方法将参数传递给
ymax
,该参数将动态地将矩形缩放到绘图区域的
ymax

通过将
annotate()
的ymax值硬编码为大于绘图
ymax
,然后使用下图所示的
coord_cartesian()
对绘图进行“裁剪”,可以达到预期效果。然而,这需要我事先知道直方图的最大值是多少,如果我调整
binwidth
,它当然会改变。是否有某种方法可以动态缩放
ymax

ggplot(
  data = mtcars,
  aes(
    x=mpg
  )
 )+
  geom_histogram(
    binwidth = 3,
    fill = "gray63"
  )+
  annotate(
    "rect",
    xmin = 21,
    xmax = 22,
    ymin = 0,
    ymax = 10, #hardcode ymax to be > plot ymax
    fill = "gray18",
    alpha = 0.5
  )+
  theme_bw()
  coord_cartesian(
    ylim = c(0,8) #crop back to plot ymax
  )

许多位置参数可以接受
Inf
-Inf
,将它们设置为当前显示的最高/最低值。这是由绘图限制设置的,不一定是数据。然后您可以删除
coord_cartesian
位,因为您不再需要硬编码限制

库(ggplot2)
ggplot(平均车流量,平均有效里程(x=mpg))+
几何图形直方图(binwidth=3,fill=“gray63”)+
注释(“rect”,xmin=21,xmax=22,ymin=0,ymax=Inf,fill=“gray18”,alpha=0.5)

如果出于任何原因,您需要绘图显示更高的限制,您可以看到
Inf
将相应地进行调整:

ggplot(mtcars,aes(x=mpg))+
几何图形直方图(binwidth=3,fill=“gray63”)+
注释(“rect”,xmin=21,xmax=22,ymin=0,ymax=Inf,fill=“gray18”,alpha=0.5)+
ylim(0,12)

ymax=Inf
应该有用,如果我明白你想要什么,那就是,你是冠军。你愿意回答这个问题,这样我就可以给你一个代表点了吗?