r - 使用线型在 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))
解决方案
另一种方法是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()
您可以在链接中看到结果图。
推荐阅读
- azurekinect - Kinect Azure 身体追踪坐标映射
- reactjs - Redux-form 和 form 标签:大写字母?
- elasticsearch - 长类型的 ElasticSearch 的嵌套查询(ES 5.0.4)
- php - 限制子目录中的 PHP
- opencv - 使用 C++ 代码通过 ttyACM0 端口从 OpenMV H7 摄像头读取视频
- excel - 基于vba中两个范围的if语句构建循环
- vue.js - 创建自动完成输入 Vue Js
- python - 为什么我得到 ValueError: zero-size array to reduction operation maximum which has no identity?
- jquery - 如何在 css clac() 中发送动态值
- yaml - 我正在使用 YAML 文件将对象值解析为 DataFilter 对象