R 在ggplot中绘制图例

R 在ggplot中绘制图例,r,ggplot2,R,Ggplot2,我已经使用ggplot2生成了一个绘图,但是我在创建自定义图例时遇到了困难。我的情节是这样的: 黑色部分是ggplot创建的,而红色部分是我需要添加的。点旁边的矩形实际上是一个标签,但我需要标签轮廓一个矩形作为图例的一部分。我提到了相关的问题,但我还没有看到类似的问题,因为我认为这个问题更多的是在图例中绘制,而不是映射 有人能帮我吗?因为我有很多绘图,我更喜欢用R来解决这个问题,而不是用图像编辑器手动编辑绘图。谢谢 编辑: 根据要求,提供可复制的样品。对不起,没有提前添加 library(gg

我已经使用ggplot2生成了一个绘图,但是我在创建自定义图例时遇到了困难。我的情节是这样的:

黑色部分是ggplot创建的,而红色部分是我需要添加的。点旁边的矩形实际上是一个标签,但我需要标签轮廓一个矩形作为图例的一部分。我提到了相关的问题,但我还没有看到类似的问题,因为我认为这个问题更多的是在图例中绘制,而不是映射

有人能帮我吗?因为我有很多绘图,我更喜欢用R来解决这个问题,而不是用图像编辑器手动编辑绘图。谢谢

编辑: 根据要求,提供可复制的样品。对不起,没有提前添加

library(ggrepel)
dput(df)
structure(list(ID = 1L, Date = structure(16259, class = "Date"), 
    Primary = 0.009, Secondary = structure(1L, .Label = "Label ABC", class = "factor")), row.names = c(NA, 
-1L), class = "data.frame", .Names = c("ID", "Date", "Primary", 
"Secondary"))

ggplot(df, aes(Date, Primary)) + geom_point(aes(shape=ifelse(Primary>0, "Detected", "Not Detected"))) + geom_label_repel(aes(label=Secondary)) + scale_shape_manual(values=c("Not Detected"=1,"Detected"=19),name="Primary") + theme_bw()
您的数据:

df <- data.frame(stringsAsFactors=FALSE,
           ID = c(1L, 2L),
           Date = c("2014-07-08", "2017-03-12"),
           Primary = c(0.009, -0.05),
           Secondary = c("Label ABC", "Label BCD")
)

你能把生成图的代码贴出来吗?你看到了吗?如果是,但问题仍未解决,我强烈建议您通过提供。通过这种方式,你将帮助他人,让他们实际上更好地帮助你。抱歉,补充,谢谢。
library(ggrepel)


df %>% 
  mutate(isDetected=ifelse(Primary>0, "Detected", "Not Detected")) %>% 
  ggplot(aes(Date, Primary)) + 
    geom_rect(aes(xmin=Date, xmax=Date, ymin=Primary, ymax=Primary, color=isDetected), 
              fill="white")+
    geom_point(aes(shape=isDetected), size=3) + 
    geom_label_repel(aes(label=Secondary, color=isDetected), show.legend = FALSE) + 
    scale_shape_manual(values=c("Not Detected"=1,"Detected"=19))+
    labs(shape="Primary",
        color="Secondary")+
    theme_bw()