R 将项目添加到现有图例中

R 将项目添加到现有图例中,r,ggplot2,legend,R,Ggplot2,Legend,我是ggplot2的新手,几个小时以来我一直在努力在我的剧情中添加第二个传奇 我使用了两个data.frames df_1和df_2以及两个geom_点调用。我设法为df_2创建了一个图例,但无法为df_1添加第二个图例 下面是一个代码示例,其中还包括绘图: ########## Create sample data set.seed(69) df_1 = data.frame(lat = rnorm(20), lon = rnorm(20),

我是ggplot2的新手,几个小时以来我一直在努力在我的剧情中添加第二个传奇

我使用了两个data.frames df_1和df_2以及两个geom_点调用。我设法为df_2创建了一个图例,但无法为df_1添加第二个图例

下面是一个代码示例,其中还包括绘图:

########## Create sample data
set.seed(69)
df_1 = data.frame(lat = rnorm(20), 
                  lon = rnorm(20), 
                  cor = c(rep('positive', 12), rep('negative', 8)), 
                  sign = 0)

df_2 = data.frame(lat = rnorm(20), 
                  lon = rnorm(20), 
                  cor = c(rep('positive', 7), rep('negative', 13)), 
                  sign = c(rep(99, 5), rep(95, 6), rep(90,9)))

#### Plot data
library(ggplot2)
p = ggplot() +

    # geom_point for df_1
    geom_point(data=df_1, aes(x=lon, y=lat), 
               alpha=0.7, color = 'darkgrey', size = 3) +

    # geom_point for df_2
    geom_point(data=df_2, aes(x=lon, y=lat, size=sign, colour = cor), alpha = 0.5) +

    scale_color_manual(values=c("red", "blue"),
                       name='cor', 
                       labels = c('neg', 'pos'),
                       guide = guide_legend(override.aes = list(alpha = 1, size = 3))) +

    scale_size(range = c(1,3), 
               breaks = c(90, 95, 99),
               labels = c(0.1, 0.05, 0.01),
               name = 'sign',
               guide = guide_legend(override.aes = list(colour = 'black', 
                                                        alpha = 1)))

print(p)
如何为df_1的geom_point调用添加图例


在cor right图例中添加第三个暗灰点(标签为“not sign”)就足够了。

我想简单的解决方案是,按照您的要求将第三个暗灰点添加到cor图例中。为此,您必须:

将df_1中的cor值更改为完全相同。 指定df_1 aes中的颜色。 在“缩放颜色”手册中添加第三点的信息。 代码:

结果:

# Change values so we would have single color for them
df_1$cor <- "foo" 

library(ggplot2)
ggplot() +
    geom_point(aes(lon, lat, color = cor), df_1,
               alpha = 0.7, size = 3) +
    geom_point(aes(lon, lat, size = sign, colour = cor), df_2,
               alpha = 0.5) +
    scale_color_manual(values = c("darkgrey", "red", "blue"),
                       labels = c("not sign", "neg", "pos"),
                       guide = guide_legend(override.aes = list(alpha = 1, size = 3))) +
    scale_size(range = c(1, 3), 
               breaks = c(90, 95, 99),
               labels = c(0.1, 0.05, 0.01),
               guide = guide_legend(override.aes = list(colour = "black", alpha = 1)))