首页 > 解决方案 > 使用线型在 ggplot 上添加一个简单的图例

问题描述

如何在这个 ggplot 中添加图例?我到处搜索,但找不到与我当前代码匹配的简单方法。我有三个变量,它们都具有相同的颜色和不同的线型。

ggplot()+geom_line(data=datapop, aes(Year, OECD),size = 0.7, color="#69b3a2") +
    geom_line(data=datapop, aes(Year, World),size = 0.7, color="#69b3a2", linetype="dashed")+
    geom_line(data=datapop, aes(Year, Switzerland),size = 0.7, color="#69b3a2", linetype="twodash")+
    xlab("Years")+ ylab("Aging") +theme_minimal()+ labs(color="Legend text")+
    scale_x_date(date_breaks = "2 years",date_labels = "%Y")+
    theme(axis.text.x=element_text(angle=60, hjust=1))

标签: rggplot2legend

解决方案


另一种方法是data.table解决方案。自然,您首先必须安装和加载data.table软件包。

install.packages("data.table")
library(data.table)

我为您的情况创建了这个虚拟数据,并将“年份”的字符类型转换为日期格式,并将整个数据转换为data.table

datapop <- data.frame(Year = c("1980", "1982", "1984"), OECD = c(2,3,4), World = c(3,5,8), Switzerland = c(2,2.5,3)) %>% mutate(Year = as.Date(Year, format = "%Y")) %>% as.data.table()

data.table我将 'OECD'、'World' 和 'Switzerland' 的这些列融合为 'variable '函数的单个列melt(),使用 'Year' 列作为 ID 列:

datapop_melted <- melt(datapop, id.vars = "Year")

然后,我只是使用 package.json 绘制了这些数据ggplot2。在aes()我给出linetype = variable参数的部分中,它可以根据线型自行创建图例:

ggplot(data=datapop_melted) +
      geom_line(aes(x = Year, y = value, linetype = variable)) + 
      labs(title="Years vs Aging", x ="Years", y = "Aging", linetype = "Location") +
      scale_x_date(date_breaks = "2 years", date_labels = "%Y") +
      theme(axis.text.x=element_text(angle=60, hjust=1)) +
      theme_minimal()

您可以在链接中看到结果图。


推荐阅读