如何将geom_rect用于离散轴值

pjngdqdw  于 2023-11-14  发布在  其他
关注(0)|答案(2)|浏览(161)

我想绘制矩形,但我有一个离散值的x轴。我如何设置xmin和xmax值从离散值之间的一个点开始?

library(ggplot2)
df <- data.frame(x = c("a","b","c"), y = c(1,2,3))
ggplot(data = df, aes(x,y)) + 
  geom_point() +
  geom_rect(data = NULL, aes(
    xmin = "b", xmax = "c", ymin = 1.5, ymax = 2.5
  ), color="red", fill = NA)

字符串


的数据
这段代码绘制了一个矩形,但我想把它向左移动一点。我有点想能够设置xmin = "b"-0.5xmax = "b"+0.5,如果这有意义的话。

0g0grzrc

0g0grzrc1#

您可以尝试:

ggplot(data = df) +
  geom_rect(data = df, aes(x = x, y=y), xmin = as.numeric(df$x[[2]]) - 0.5,
                                        xmax = as.numeric(df$x[[3]]) + 0.5,
                                        ymin = 0, ymax = 2)

字符串
这就像你在aes调用之外调用xmin和xmax等一样,你可以使用任何你想要的。因子水平被用在图中来绘制它们,所以as.numeric会确保你得到正确的因子水平。

5rgfhyps

5rgfhyps2#

是的,“B”+ 0.5是有意义的,但只有在“B”通过一个尺度转换为一个数字之后才能做到这一点。这可以通过在aes的theticsMap中使用xmax = stage(., after_scale = xmax + 0.5)来实现:

ggplot(data = df, aes(x,y)) + geom_point()+
  geom_rect(data = NULL, aes(
    xmin = stage("b", after_scale = xmin-0.5),
    xmax = stage("c", after_scale = xmax+0.5),
    ymin = 1.5,
    ymax = 2.5
  ), color="red", fill = NA)

字符串
(Note,当矩形由data定义时,这也可以工作。
x1c 0d1x的数据
创建于2023-11-08带有reprex v2.0.2

相关问题