首页 > 解决方案 > ggplot:使用最小值和最大值的分类值添加 geom_rect

问题描述

我有一个非常基本的ggplot:

library(ggplot)

ggplot(mpg, aes(x=displ, y=manufacturer)) +
  geom_point() +
  geom_rect(aes(xmin=1.8, xmax=3.0, ymin='audi', ymax='audi', fill='red')) 

我想为 y 轴上的 audi 行添加一个从 x 轴值 1.8 到 3.0 的条。有没有办法在ggplot中实现这一点?其他人可以在这个问题上提供的任何帮助将不胜感激!

标签: rggplot2

解决方案


可以办到。分类值转换为整数以进行绘图,因此您可以将它们指定为整数(audi是第一个类别,所以整数是1),或者,就像我在下面所做的那样,列出类别名称并按名称指定。

library(ggplot)
data("mpg")
man_list <- unique(mpg$manufacturer)

ggplot(mpg, aes(x=displ, y=manufacturer)) +
  geom_point() +
  # geom_rect(aes(xmin=1.8, xmax=3.0, ymin= "audi", ymax=lead("audi"), fill='red')) 
  geom_rect(aes(ymin = which(man_list=="audi")-0.5,
                ymax = which(man_list=="audi")+0.5,
                xmin=1.8,
                xmax=3,
                fill="red"))

在此处输入图像描述


推荐阅读