将字母显示为 geom_text 图例的关键字形而不是默认的“a”

Tom*_*art 5 r legend ggplot2

我正在使用 geom_raster 和 geom_text 在我的情节中的每个彩色矩形上放置一个字母。我也希望这封信出现在图例中的颜色框顶部,但不知道如何。

我尝试添加show.legend=TRUEgeom_text,但这会导致每个图例键中的字母“a”,而不是所需的字符。

所需的结果如下所示:

想要的结果

这是重现基本情节的代码:

library(tidyverse)
d <-tribble(
    ~a, ~b, ~c,
    "a", "l", "A",
    "a", "r", "F",
    "b", "l", "Q",
    "b", "r", "R"
)

ggplot(data=d, aes(x=a, y=b, fill=c)) +
    geom_raster(na.rm=TRUE) +
    geom_text(aes(label=c), size=3, na.rm=TRUE) 
Run Code Online (Sandbox Code Playgroud)

和输出:

没有所需标签的示例

这可能与此问题有关:https://github.com/tidyverse/ggplot2/issues/2004,但也许有解决方法?

PoG*_*bas 5

您可以geom_point改为使用并将点形状指定为带有scale_shape_manual(values = d$c).

# We have to remove legend text and label with theme
ggplot(d, aes(a, b, fill = c, shape = c)) +
    geom_raster() +
    geom_point(size = 3) +
    scale_shape_manual(values = d$c) +
    theme(legend.text = element_text(size = 0),
          legend.title = element_text(size = 0))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明