R 将ann项添加到ggplot2图例

R 将ann项添加到ggplot2图例,r,ggplot2,R,Ggplot2,我想实现的是,图例的标题为“年”,蓝色条显示为“2016年”的小矩形,以及“2012年”和“2008年”的圆圈和三角形。有什么办法可以做到吗?因为现在我只得到绘制点数据的图例 可复制示例: # packages needed library(tidyverse) library(eurostat) library(lubridate) # downlaoding the dataset ilc_di11 <- get_eurostat("ilc_di11", stringsAsFact

我想实现的是,图例的标题为“年”,蓝色条显示为“2016年”的小矩形,以及“2012年”和“2008年”的圆圈和三角形。有什么办法可以做到吗?因为现在我只得到绘制点数据的图例

可复制示例:

# packages needed

library(tidyverse)
library(eurostat)
library(lubridate)

# downlaoding the dataset
ilc_di11 <- get_eurostat("ilc_di11", stringsAsFactors=FALSE)

# manipulating data
df <- ilc_di11 %>% filter(age=="TOTAL",
                         geo %in% c("EU28", "BE","BG","CZ","DK","DE","EE","IE","EL","ES","FR","HR","IT","CY","LV","LT","LU","HU","MT","NL","AT","PL","PT","RO","SI","SK","FI","SE","UK"),
                         sex=="T",
                         year(time) %in% c("2008", "2012", "2016"))%>%
        spread(time, values) %>%
        rename(`2008`=`2008-01-01`,
               `2012`=`2012-01-01`,
               `2016`=`2016-01-01`)%>%
        gather(var, values, 5:6)

# plotting data
ggplot(data=df)+
        geom_bar(aes(x=reorder(geo, `2016`), y=`2016`),
                 stat = "identity", 
                 position = "dodge",
                 fill="steelblue")+
        geom_point(aes(x=reorder(geo, `2016`), y=values, 
                       shape=var,
                       color=var),
                   size=3)+
        labs(title="Pajamų nelygybė nustatyta pagal S80/S20 santykį", 
             subtitle="Šaltinis: Eurostat (ilc_di11)", 
             x="Šalys", 
             y="Santykis")
#需要软件包
图书馆(tidyverse)
图书馆(欧盟统计局)
图书馆(lubridate)
#下调数据集
国际劳工公约11%
排列(时间、值)%>%
重命名(`2008`=`2008-01-01`,
`2012`=`2012-01-01`,
`2016`=`2016-01-01`)%>%
聚集(变量,值,5:6)
#绘图数据
ggplot(数据=df)+
geom_bar(aes(x=重新订购(geo,`2016`),y=`2016`),
stat=“identity”,
position=“道奇”,
fill=“钢蓝”)+
geom_点(aes(x=重新排序(geo,`2016`),y=值,
形状=变量,
颜色=var),
尺寸=3)+
实验室(title=“Pajamųnelygybėnustatyta pagal S80/S20 santykį”,
副标题=“Šaltinis:Eurostat(ilc_di11)”,
x=“Šalys”,
y=“Santykis”)

有很多解决方案,其中之一就是将虚拟的
数据帧
传递到一个单独的
几何点
层。设置该点的大小0,使其不会显示在绘图中,但为其指定颜色和形状

ggplot(df, aes(shape = var, color = var)) +
    geom_bar(aes(reorder(geo, `2016`), `2016`), 
             stat = "identity", position = "dodge", fill = "steelblue", color = NA) +
    geom_point(aes(x, y),
               data.frame(x = Inf, y = Inf, var = "2016", var = "2016"),
               size = 0) +
    geom_point(aes(reorder(geo, `2016`), values, shape = var, color = var), 
               size = 3) +
    labs(title    = "Pajamų nelygybė nustatyta pagal S80/S20 santykį", 
         subtitle = "Šaltinis: Eurostat (ilc_di11)", 
         x        = "Šalys", 
         y        = "Santykis",
         color    = "Year",
         shape    = "Year")

有很多解决方案,其中之一就是将虚拟的
数据帧
传递到一个单独的
几何点
层。设置该点的大小0,使其不会显示在绘图中,但为其指定颜色和形状

ggplot(df, aes(shape = var, color = var)) +
    geom_bar(aes(reorder(geo, `2016`), `2016`), 
             stat = "identity", position = "dodge", fill = "steelblue", color = NA) +
    geom_point(aes(x, y),
               data.frame(x = Inf, y = Inf, var = "2016", var = "2016"),
               size = 0) +
    geom_point(aes(reorder(geo, `2016`), values, shape = var, color = var), 
               size = 3) +
    labs(title    = "Pajamų nelygybė nustatyta pagal S80/S20 santykį", 
         subtitle = "Šaltinis: Eurostat (ilc_di11)", 
         x        = "Šalys", 
         y        = "Santykis",
         color    = "Year",
         shape    = "Year")