如何在ggplot中动态调整AES的轴刻度限制?

时间:2018-09-05 19:29:17

标签: r ggplot2

我正在尝试用阴影矩形为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
  )

example plot

1 个答案:

答案 0 :(得分:2)

许多位置参数可以接受public class Task { public int TaskID { get; set; } public int? PeriodicTaskID { get; set; } public virtual PeriodicTask PeriodicTask { get; set; } } public class PeriodicTask { public int PeriodicTaskID { get; set; } public virtual ICollection<Task> Tasks { get; set; } } Inf,将其设置为当前显示的最高/最低值。这是由绘图限制设置的,不一定是数据设置的。然后,您可以删除-Inf位,因为您不再需要对限制进行硬编码。

coord_cartesian

如果出于某种原因您需要该图以显示更高的限制,则可以看到library(ggplot2) ggplot(mtcars, aes(x = mpg)) + geom_histogram(binwidth = 3, fill = "gray63") + annotate("rect", xmin = 21, xmax = 22, ymin = 0, ymax = Inf, fill = "gray18", alpha = 0.5) 随后将进行相应调整:

Inf